{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dataset URL: https://www.kaggle.com/datasets/warcoder/earthquake-dataset\n",
      "数据集已下载并解压！\n"
     ]
    }
   ],
   "source": [
    "from kaggle.api.kaggle_api_extended import KaggleApi\n",
    "\n",
    "# 创建 Kaggle API 实例\n",
    "api = KaggleApi()\n",
    "api.authenticate()  # 进行身份验证\n",
    "\n",
    "# 数据集名称，可以在 Kaggle 数据集页面找到\n",
    "dataset_slug = \"warcoder/earthquake-dataset\"  # 这是你提到的数据集\n",
    "download_path = './'  # 设置下载文件夹路径（例如当前文件夹）\n",
    "\n",
    "# 下载数据集并解压\n",
    "api.dataset_download_files(dataset_slug, path=download_path, unzip=True)\n",
    "\n",
    "print(\"数据集已下载并解压！\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from imblearn.over_sampling import SMOTE\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>title</th>\n",
       "      <th>magnitude</th>\n",
       "      <th>date_time</th>\n",
       "      <th>cdi</th>\n",
       "      <th>mmi</th>\n",
       "      <th>alert</th>\n",
       "      <th>tsunami</th>\n",
       "      <th>sig</th>\n",
       "      <th>net</th>\n",
       "      <th>nst</th>\n",
       "      <th>dmin</th>\n",
       "      <th>gap</th>\n",
       "      <th>magType</th>\n",
       "      <th>depth</th>\n",
       "      <th>latitude</th>\n",
       "      <th>longitude</th>\n",
       "      <th>location</th>\n",
       "      <th>continent</th>\n",
       "      <th>country</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>M 7.0 - 18 km SW of Malango, Solomon Islands</td>\n",
       "      <td>7.0</td>\n",
       "      <td>22-11-2022 02:03</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>green</td>\n",
       "      <td>1</td>\n",
       "      <td>768</td>\n",
       "      <td>us</td>\n",
       "      <td>117</td>\n",
       "      <td>0.509</td>\n",
       "      <td>17.0</td>\n",
       "      <td>mww</td>\n",
       "      <td>14.000</td>\n",
       "      <td>-9.7963</td>\n",
       "      <td>159.596</td>\n",
       "      <td>Malango, Solomon Islands</td>\n",
       "      <td>Oceania</td>\n",
       "      <td>Solomon Islands</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>M 6.9 - 204 km SW of Bengkulu, Indonesia</td>\n",
       "      <td>6.9</td>\n",
       "      <td>18-11-2022 13:37</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>green</td>\n",
       "      <td>0</td>\n",
       "      <td>735</td>\n",
       "      <td>us</td>\n",
       "      <td>99</td>\n",
       "      <td>2.229</td>\n",
       "      <td>34.0</td>\n",
       "      <td>mww</td>\n",
       "      <td>25.000</td>\n",
       "      <td>-4.9559</td>\n",
       "      <td>100.738</td>\n",
       "      <td>Bengkulu, Indonesia</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>M 7.0 -</td>\n",
       "      <td>7.0</td>\n",
       "      <td>12-11-2022 07:09</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>green</td>\n",
       "      <td>1</td>\n",
       "      <td>755</td>\n",
       "      <td>us</td>\n",
       "      <td>147</td>\n",
       "      <td>3.125</td>\n",
       "      <td>18.0</td>\n",
       "      <td>mww</td>\n",
       "      <td>579.000</td>\n",
       "      <td>-20.0508</td>\n",
       "      <td>-178.346</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Oceania</td>\n",
       "      <td>Fiji</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>M 7.3 - 205 km ESE of Neiafu, Tonga</td>\n",
       "      <td>7.3</td>\n",
       "      <td>11-11-2022 10:48</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>green</td>\n",
       "      <td>1</td>\n",
       "      <td>833</td>\n",
       "      <td>us</td>\n",
       "      <td>149</td>\n",
       "      <td>1.865</td>\n",
       "      <td>21.0</td>\n",
       "      <td>mww</td>\n",
       "      <td>37.000</td>\n",
       "      <td>-19.2918</td>\n",
       "      <td>-172.129</td>\n",
       "      <td>Neiafu, Tonga</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>M 6.6 -</td>\n",
       "      <td>6.6</td>\n",
       "      <td>09-11-2022 10:14</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>green</td>\n",
       "      <td>1</td>\n",
       "      <td>670</td>\n",
       "      <td>us</td>\n",
       "      <td>131</td>\n",
       "      <td>4.998</td>\n",
       "      <td>27.0</td>\n",
       "      <td>mww</td>\n",
       "      <td>624.464</td>\n",
       "      <td>-25.5948</td>\n",
       "      <td>178.278</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                          title  magnitude         date_time  \\\n",
       "0  M 7.0 - 18 km SW of Malango, Solomon Islands        7.0  22-11-2022 02:03   \n",
       "1      M 6.9 - 204 km SW of Bengkulu, Indonesia        6.9  18-11-2022 13:37   \n",
       "2                                      M 7.0 -         7.0  12-11-2022 07:09   \n",
       "3           M 7.3 - 205 km ESE of Neiafu, Tonga        7.3  11-11-2022 10:48   \n",
       "4                                      M 6.6 -         6.6  09-11-2022 10:14   \n",
       "\n",
       "   cdi  mmi  alert  tsunami  sig net  nst   dmin   gap magType    depth  \\\n",
       "0    8    7  green        1  768  us  117  0.509  17.0     mww   14.000   \n",
       "1    4    4  green        0  735  us   99  2.229  34.0     mww   25.000   \n",
       "2    3    3  green        1  755  us  147  3.125  18.0     mww  579.000   \n",
       "3    5    5  green        1  833  us  149  1.865  21.0     mww   37.000   \n",
       "4    0    2  green        1  670  us  131  4.998  27.0     mww  624.464   \n",
       "\n",
       "   latitude  longitude                  location continent          country  \n",
       "0   -9.7963    159.596  Malango, Solomon Islands   Oceania  Solomon Islands  \n",
       "1   -4.9559    100.738       Bengkulu, Indonesia       NaN              NaN  \n",
       "2  -20.0508   -178.346                       NaN   Oceania             Fiji  \n",
       "3  -19.2918   -172.129             Neiafu, Tonga       NaN              NaN  \n",
       "4  -25.5948    178.278                       NaN       NaN              NaN  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('earthquake_data.csv')\n",
    "data.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 782 entries, 0 to 781\n",
      "Data columns (total 19 columns):\n",
      " #   Column     Non-Null Count  Dtype  \n",
      "---  ------     --------------  -----  \n",
      " 0   title      782 non-null    object \n",
      " 1   magnitude  782 non-null    float64\n",
      " 2   date_time  782 non-null    object \n",
      " 3   cdi        782 non-null    int64  \n",
      " 4   mmi        782 non-null    int64  \n",
      " 5   alert      415 non-null    object \n",
      " 6   tsunami    782 non-null    int64  \n",
      " 7   sig        782 non-null    int64  \n",
      " 8   net        782 non-null    object \n",
      " 9   nst        782 non-null    int64  \n",
      " 10  dmin       782 non-null    float64\n",
      " 11  gap        782 non-null    float64\n",
      " 12  magType    782 non-null    object \n",
      " 13  depth      782 non-null    float64\n",
      " 14  latitude   782 non-null    float64\n",
      " 15  longitude  782 non-null    float64\n",
      " 16  location   777 non-null    object \n",
      " 17  continent  206 non-null    object \n",
      " 18  country    484 non-null    object \n",
      "dtypes: float64(6), int64(5), object(8)\n",
      "memory usage: 116.2+ KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "title          0\n",
       "magnitude      0\n",
       "date_time      0\n",
       "cdi            0\n",
       "mmi            0\n",
       "alert        367\n",
       "tsunami        0\n",
       "sig            0\n",
       "net            0\n",
       "nst            0\n",
       "dmin           0\n",
       "gap            0\n",
       "magType        0\n",
       "depth          0\n",
       "latitude       0\n",
       "longitude      0\n",
       "location       5\n",
       "continent    576\n",
       "country      298\n",
       "dtype: int64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>magnitude</th>\n",
       "      <th>depth</th>\n",
       "      <th>cdi</th>\n",
       "      <th>mmi</th>\n",
       "      <th>sig</th>\n",
       "      <th>alert</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7.0</td>\n",
       "      <td>14.000</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>768</td>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.9</td>\n",
       "      <td>25.000</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>735</td>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7.0</td>\n",
       "      <td>579.000</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>755</td>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7.3</td>\n",
       "      <td>37.000</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>833</td>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6.6</td>\n",
       "      <td>624.464</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>670</td>\n",
       "      <td>green</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   magnitude    depth  cdi  mmi  sig  alert\n",
       "0        7.0   14.000    8    7  768  green\n",
       "1        6.9   25.000    4    4  735  green\n",
       "2        7.0  579.000    3    3  755  green\n",
       "3        7.3   37.000    5    5  833  green\n",
       "4        6.6  624.464    0    2  670  green"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features = [\"magnitude\", \"depth\", \"cdi\", \"mmi\", \"sig\"]\n",
    "target = \"alert\"\n",
    "data = data[features + [target]]\n",
    "data.head()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAH7CAYAAAAdLuy3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABt50lEQVR4nO3deVwU9eMG8GcvzuW+QQRBxQsVb/M+8sizX2apqZnpN9OvWWl2H2Z2mVr2LbtM07JL09QUNW/Kk8MbBFGUG7kX2IXd+f1BbqKonDu7O8/79fJVDLM7z7LAw8x85jMyQRAEEBERkajkYgcgIiIiFjIREZFZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARaymXrzzTchk8lMsq3+/fujf//+xo/3798PmUyGX3/91STbf/zxxxEcHGySbdVVcXExnnzySfj6+kImk2HevHkm23ZwcDAef/xxk22vNkz5fXormUyGN998U5RtN4YbP3f79+8XOwqJhIVsAmvWrIFMJjP+s7Ozg7+/P4YOHYpPPvkERUVFDbKdtLQ0vPnmm4iNjW2Q52tI5pytJpYsWYI1a9Zg1qxZWLduHSZPnix2JGoE586dw5tvvonLly+LHYUkiIVsQosWLcK6devw+eef47///S8AYN68eQgPD8epU6eqrPvqq6+itLS0Vs+flpaGt956q9alt2vXLuzatatWj6mtu2X76quvEB8f36jbr6+9e/eiR48eeOONN/DYY4+hc+fOYkcyC3X5PjVn586dw1tvvcVCJlEoxQ4gJcOHD0eXLl2MH7/00kvYu3cvRo4cidGjR+P8+fOwt7cHACiVSiiVjfv2lJSUwMHBATY2No26nXtRqVSibr8msrKy0KZNG7FjmB1TfJ+aQllZmeg/B0TcQxbZwIED8dprr+HKlStYv369cXl15+Z2796N3r17w9XVFWq1GmFhYXj55ZcBVJ5/6tq1KwBg2rRpxsPja9asAVB5nrhdu3Y4efIk+vbtCwcHB+Njbz2HfINer8fLL78MX19fODo6YvTo0bh69WqVde50fvPm57xXturOIWs0Gjz//PMIDAyEra0twsLCsHTpUtx6czKZTIY5c+Zg8+bNaNeuHWxtbdG2bVvs3Lmz+i/4LbKysjB9+nT4+PjAzs4OHTp0wNq1a42fv3FeLzk5Gdu3bzdmv9MeVLt27TBgwIDblhsMBgQEBGDcuHHGZUuXLsV9990HDw8P2Nvbo3PnzjU6b3+n87Y3To3cmm3Hjh3o06cPHB0d4eTkhBEjRuDs2bNV1snIyMC0adPQpEkT2Nraws/PD2PGjLnnnmJ1Werznuh0Orz++uvo3LkzXFxc4OjoiD59+mDfvn33fCwApKam4oknnoCPj49xu6tXr66yzo339Mcff8Srr76KgIAAODg44JNPPsHDDz8MABgwYIDxvb7XOd0LFy5g/Pjx8PLygr29PcLCwvDKK69UWScmJgbDhw+Hs7Mz1Go1Bg0ahCNHjtzz9dTk5+vm1/Tzzz/jrbfeQkBAAJycnDBu3DgUFBRAq9Vi3rx58Pb2hlqtxrRp06DVaqs8Z31/lqj+LP9PWyswefJkvPzyy9i1axdmzJhR7Tpnz57FyJEj0b59eyxatAi2trZITExEVFQUAKB169ZYtGgRXn/9dcycORN9+vQBANx3333G57h+/TqGDx+ORx99FI899hh8fHzumuudd96BTCbDwoULkZWVhRUrVmDw4MGIjY017snXRE2y3UwQBIwePRr79u3D9OnT0bFjR0RGRmLBggVITU3F8uXLq6x/+PBhbNq0CU8//TScnJzwySef4KGHHkJKSgo8PDzumKu0tBT9+/dHYmIi5syZg2bNmuGXX37B448/jvz8fDzzzDNo3bo11q1bh2effRZNmjTB888/DwDw8vKq9jkfeeQRvPnmm8jIyICvr2+VjGlpaXj00UeNyz7++GOMHj0akyZNgk6nw48//oiHH34Y27Ztw4gRI2r2xb2HdevWYerUqRg6dCjef/99lJSU4PPPP0fv3r0RExNj/EPooYcewtmzZ/Hf//4XwcHByMrKwu7du5GSklKnAXd1fU8KCwvx9ddfY8KECZgxYwaKiorwzTffYOjQoTh27Bg6dux4x8dmZmaiR48exmLx8vLCjh07MH36dBQWFt42EO/tt9+GjY0N5s+fD61WiyFDhmDu3Ln45JNP8PLLL6N169YAYPxvdU6dOoU+ffpApVJh5syZCA4ORlJSErZu3Yp33nkHQOXPbp8+feDs7IwXXngBKpUKX3zxBfr3748DBw6ge/fuNf/C3sO7774Le3t7vPjii0hMTMTKlSuhUqkgl8uRl5eHN998E0eOHMGaNWvQrFkzvP7661UeX9f3jRqIQI3u22+/FQAIx48fv+M6Li4uQkREhPHjN954Q7j57Vm+fLkAQMjOzr7jcxw/flwAIHz77be3fa5fv34CAGHVqlXVfq5fv37Gj/ft2ycAEAICAoTCwkLj8p9//lkAIHz88cfGZUFBQcLUqVPv+Zx3yzZ16lQhKCjI+PHmzZsFAMLixYurrDdu3DhBJpMJiYmJxmUABBsbmyrL4uLiBADCypUrb9vWzVasWCEAENavX29cptPphJ49ewpqtbrKaw8KChJGjBhx1+cTBEGIj4+vdttPP/20oFarhZKSEuOym///xrbbtWsnDBw4sMryW7/Gt35v3HDj+yw5OVkQBEEoKioSXF1dhRkzZlRZLyMjQ3BxcTEuz8vLEwAIH3744T1f362qy1Kf96SiokLQarVVluXl5Qk+Pj7CE088cdt23njjDePH06dPF/z8/IScnJwq6z366KOCi4uL8et94/s7JCTktvfgl19+EQAI+/btu2vOG/r27Ss4OTkJV65cqbLcYDAY/3/s2LGCjY2NkJSUZFyWlpYmODk5CX379jUuu5Hr5m3X9OfrxmPbtWsn6HQ64/IJEyYIMplMGD58eJXH9+zZs8rPnCDU732jhsFD1mZCrVbfdbS1q6srAGDLli0wGAx12oatrS2mTZtW4/WnTJkCJycn48fjxo2Dn58f/vjjjzptv6b++OMPKBQKzJ07t8ry559/HoIgYMeOHVWWDx48GKGhocaP27dvD2dnZ1y6dOme2/H19cWECROMy1QqFebOnYvi4mIcOHCg1tlbtmyJjh074qeffjIu0+v1+PXXXzFq1KgqRxZu/v+8vDwUFBSgT58+iI6OrvV2q7N7927k5+djwoQJyMnJMf5TKBTo3r278TCwvb09bGxssH//fuTl5TXItuv6nigUCuO5XIPBgNzcXFRUVKBLly53/boIgoCNGzdi1KhREAShyusdOnQoCgoKbnv81KlTa3Wk51bZ2dk4ePAgnnjiCTRt2rTK524cxtfr9di1axfGjh2LkJAQ4+f9/PwwceJEHD58GIWFhXXOcKspU6ZUGZPRvXt3CIKAJ554osp63bt3x9WrV1FRUVFleV3fN2oYLGQzUVxcXKX8bvXII4+gV69eePLJJ+Hj44NHH30UP//8c63KOSAgoFYDV1q0aFHlY5lMhubNmzf6CNQrV67A39//tq/HjUOHV65cqbL81l+GAODm5nbPcrly5QpatGgBubzqj8GdtlNTjzzyCKKiopCamgqg8vxeVlYWHnnkkSrrbdu2DT169ICdnR3c3d3h5eWFzz//HAUFBXXa7q0uXrwIoHKcgpeXV5V/u3btQlZWFoDKP9Tef/997NixAz4+Pujbty8++OADZGRk1HnbdX1PAGDt2rVo37497Ozs4OHhAS8vL2zfvv2uX5fs7Gzk5+fjyy+/vO213vgj9MbrvaFZs2a1fFVV3Sipdu3a3TVXSUkJwsLCbvtc69atYTAYbhuXUR+3ft1dXFwAAIGBgbctNxgMt31N6/O+Uf3xHLIZuHbtGgoKCtC8efM7rmNvb4+DBw9i37592L59O3bu3ImffvoJAwcOxK5du6BQKO65nfrsDdzJnSaF0Ov1NcrUEO60HeGWAWCm8sgjj+Cll17CL7/8gnnz5uHnn3+Gi4sLhg0bZlzn0KFDGD16NPr27YvPPvsMfn5+UKlU+Pbbb/HDDz/c9fnv9jW/2Y0/1tatW1flfPYNN4+OnjdvHkaNGoXNmzcjMjISr732Gt59913s3bsXERERNX7tN9T1PVm/fj0ef/xxjB07FgsWLIC3tzcUCgXeffddJCUl3fFxN17rY489hqlTp1a7Tvv27at83Bg/Dw2ttj9fd/q61/T9MLefJalhIZuBdevWAQCGDh161/XkcjkGDRqEQYMGYdmyZViyZAleeeUV7Nu3D4MHD27wGZNu7GHdIAgCEhMTq/xic3NzQ35+/m2PvXLlSpVDdLXJFhQUhD179qCoqKjKXvKFCxeMn28IQUFBOHXqFAwGQ5W95Ppup1mzZujWrRt++uknzJkzB5s2bcLYsWNha2trXGfjxo2ws7NDZGRkleXffvvtPZ/fzc0NAJCfn288lQHcvkd/49Cjt7c3Bg8efM/nDQ0NxfPPP4/nn38eFy9eRMeOHfHRRx9VGf3f2H799VeEhIRg06ZNVb5n3njjjbs+zsvLC05OTtDr9TV6rXdSm+/TG9/fZ86cuWsuBweHaq+zv3DhAuRy+W17rzer6c8XWQceshbZ3r178fbbb6NZs2aYNGnSHdfLzc29bdmNEac3Ll9wdHQEgGp/gOviu+++q3Je+9dff0V6ejqGDx9uXBYaGoojR45Ap9MZl23btu22w3C1yfbAAw9Ar9fj008/rbJ8+fLlkMlkVbZfHw888AAyMjKqnO+tqKjAypUroVar0a9fvzo/9yOPPIIjR45g9erVyMnJue1wtUKhgEwmq7JXe/nyZWzevPmez32jaA8ePGhcptFoqlyuBVT+gefs7IwlS5agvLz8tufJzs4GUHk9ellZ2W3bcHJyuu3SmMZ2Yw/t5j2yo0eP4u+//77n4x566CFs3Lix2oK88VrvpTbfp15eXujbty9Wr16NlJSUKp+7kV+hUGDIkCHYsmVLlVM9mZmZ+OGHH9C7d284OzvfcRs1/fki68A9ZBPasWMHLly4gIqKCmRmZmLv3r3YvXs3goKC8Pvvv8POzu6Oj120aBEOHjyIESNGICgoCFlZWfjss8/QpEkT9O7dG0DlD6+rqytWrVoFJycnODo6onv37nU+V+bu7o7evXtj2rRpyMzMxIoVK9C8efMql2Y9+eST+PXXXzFs2DCMHz8eSUlJWL9+fZWBIbXNNmrUKAwYMACvvPIKLl++jA4dOmDXrl3YsmUL5s2bd9tz19XMmTPxxRdf4PHHH8fJkycRHByMX3/9FVFRUVixYsVdz+nfy/jx4zF//nzMnz8f7u7ut+21jRgxAsuWLcOwYcMwceJEZGVl4X//+x+aN29+26xttxoyZAiaNm2K6dOnY8GCBVAoFFi9ejW8vLyqFIOzszM+//xzTJ48GZ06dcKjjz5qXGf79u3o1asXPv30UyQkJGDQoEEYP3482rRpA6VSid9++w2ZmZlVLtMyhZEjR2LTpk148MEHMWLECCQnJ2PVqlVo06YNiouL7/rY9957D/v27UP37t0xY8YMtGnTBrm5uYiOjsaePXuq/aP2Vh07doRCocD777+PgoIC2NraYuDAgfD29q52/U8++QS9e/dGp06dMHPmTDRr1gyXL1/G9u3bjbPSLV682DiHwNNPPw2lUokvvvgCWq0WH3zwwV3z1PTni6yESKO7JeXG5Sg3/tnY2Ai+vr7C/fffL3z88cdVLq+54dbLSf78809hzJgxgr+/v2BjYyP4+/sLEyZMEBISEqo8bsuWLUKbNm0EpVJZ5TKjfv36CW3btq02350uodiwYYPw0ksvCd7e3oK9vb0wYsSI2y7vEARB+Oijj4SAgADB1tZW6NWrl3DixInbnvNu2W697EkQKi/ZefbZZwV/f39BpVIJLVq0ED788MMql5MIQuWlGrNnz74t050uF7lVZmamMG3aNMHT01OwsbERwsPDq700q6aXPd2sV69eAgDhySefrPbz33zzjdCiRQvB1tZWaNWqlfDtt99WexlRda/l5MmTQvfu3QUbGxuhadOmwrJly2677OmGffv2CUOHDhVcXFwEOzs7ITQ0VHj88ceFEydOCIIgCDk5OcLs2bOFVq1aCY6OjoKLi4vQvXt34eeff77na7zTZU91fU8MBoOwZMkSISgoSLC1tRUiIiKEbdu2Vfs9glsuexKEyvdz9uzZQmBgoKBSqQRfX19h0KBBwpdfflnl6wFA+OWXX6rN8NVXXwkhISGCQqGo0SVQZ86cER588EHB1dVVsLOzE8LCwoTXXnutyjrR0dHC0KFDBbVaLTg4OAgDBgwQ/vrrryrrVHfZkyDU7OfrTq/pTpdc3njfbr6Msr4/S1R/MkHg2XoiIiKx8RwyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGeD9kImIrIBer0d5ebnYMSRJpVJBoVDU+3lYyEREFkwQBGRkZCA/P1/sKJLm6uoKX19fyGSyOj8HC5mIyILdKGNvb284ODjUqxCo9gRBQElJCbKysgAAfn5+dX4uFjIRkYXS6/XGMvbw8BA7jmTZ29sDALKysuDt7V3nw9cc1EVEZKFunDN2cHAQOQndeA/qcx6fhUxEZOF4mFp8DfEesJCJiIjMAAuZiIhMrn///pg3b94dPx8cHIwVK1aYLI854KAuIiIrFPzidpNt6/J7I0y2LWvGPWQiIiIzwEImIiJRVFRUYM6cOXBxcYGnpydee+01CIJw23qXL1+GTCZDbGyscVl+fj5kMhn2799vXHbmzBkMHz4carUaPj4+mDx5MnJyckzwShoGC5mIiESxdu1aKJVKHDt2DB9//DGWLVuGr7/+uk7PlZ+fj4EDByIiIgInTpzAzp07kZmZifHjxzdw6sbDc8hERCSKwMBALF++HDKZDGFhYTh9+jSWL1+OGTNm1Pq5Pv30U0RERGDJkiXGZatXr0ZgYCASEhLQsmXLhozeKLiHTEREoujRo0eV63d79uyJixcvQq/X1/q54uLisG/fPqjVauO/Vq1aAQCSkpIaLHNj4h4yERGZNbm8ct/x5vPLt86IVVxcjFGjRuH999+/7fH1mV/alFjIREQkiqNHj1b5+MiRI2jRosVtc0F7eXkBANLT0xEREQEAVQZ4AUCnTp2wceNGBAcHQ6m0zGrjIWsiIhJFSkoKnnvuOcTHx2PDhg1YuXIlnnnmmdvWs7e3R48ePfDee+/h/PnzOHDgAF599dUq68yePRu5ubmYMGECjh8/jqSkJERGRmLatGl1OgQuBhYyERGJYsqUKSgtLUW3bt0we/ZsPPPMM5g5c2a1665evRoVFRXo3Lkz5s2bh8WLF1f5vL+/P6KioqDX6zFkyBCEh4dj3rx5cHV1NR7yNncyobqLvoiIyOyVlZUhOTkZzZo1g52dndhxJK0h3gvL+LOBiIjIyrGQiYiIzAALmYiIyAywkImIiMwAC5mIiMgMsJCJiIjMAAuZiIjIDLCQiYiIzAALmYiIyAywkImIiMyAZd4Sg4iI7u5NFxNuq8B027Ji3EMmIiKzJggCKioqxI7R6FjIRERkclqtFnPnzoW3tzfs7OzQu3dvHD9+HACwf/9+yGQy7NixA507d4atrS0OHz6MpKQkjBkzBj4+PlCr1ejatSv27NlT5XmDg4OxZMkSPPHEE3ByckLTpk3x5ZdfVlnnr7/+QseOHWFnZ4cuXbpg8+bNkMlkVe6xfObMGQwfPhxqtRo+Pj6YPHkycnJyGvVrwkImIiKTe+GFF7Bx40asXbsW0dHRaN68OYYOHYrc3FzjOi+++KLxHsjt27dHcXExHnjgAfz555+IiYnBsGHDMGrUKKSkpFR57o8++ghdunRBTEwMnn76acyaNQvx8fEAgMLCQowaNQrh4eGIjo7G22+/jYULF1Z5fH5+PgYOHIiIiAicOHECO3fuRGZmJsaPH9+oXxPefpGIyELd9ZZ/ZnwOWaPRwM3NDWvWrMHEiRMBAOXl5QgODsa8efPQtWtXDBgwAJs3b8aYMWPu+lzt2rXDU089hTlz5gCo3EPu06cP1q1bB6DycLevry/eeustPPXUU1i1ahVeffVVXLt2zfg1+/rrrzFjxgzExMSgY8eOWLx4MQ4dOoTIyEjjdq5du4bAwEDEx8ejZcuWt+Xg7ReJiMjiJCUloby8HL169TIuU6lU6NatG86fP29c1qVLlyqPKy4uxvz589G6dWu4urpCrVbj/Pnzt+0ht2/f3vj/MpkMvr6+yMrKAgDEx8ejffv2VUqzW7duVR4fFxeHffv2Qa1WG/+1atXKmL2xcJQ1ERGZJUdHxyofz58/H7t378bSpUvRvHlz2NvbY9y4cdDpdFXWU6lUVT6WyWQwGAw13m5xcTFGjRqF999//7bP+fn51eIV1A4LmYiITCo0NBQ2NjaIiopCUFAQgMpD1sePH8e8efPu+LioqCg8/vjjePDBBwFUFufly5drte2wsDCsX78eWq0Wtra2AGAcTHZDp06dsHHjRgQHB0OpNF1N8pA1ERGZlKOjI2bNmoUFCxZg586dOHfuHGbMmIGSkhJMnz79jo9r0aIFNm3ahNjYWMTFxWHixIm12vMFYHzMzJkzcf78eURGRmLp0qUAKvekAWD27NnIzc3FhAkTcPz4cSQlJSEyMhLTpk2DXq+v+wu/B+4hExFZIzOfrOO9996DwWDA5MmTUVRUhC5duiAyMhJubm53fMyyZcvwxBNP4L777oOnpycWLlyIwsLCWm3X2dkZW7duxaxZs9CxY0eEh4fj9ddfx8SJE43nlf39/REVFYWFCxdiyJAh0Gq1CAoKwrBhwyCXN95+LEdZExFZqIYY2UvA999/j2nTpqGgoAD29vZ1eo6GeC+4h0xkZsr1BpTo9CjV6VGiq0CJTv/Pv4p/llVdXlahh0Img1Ihh0oug0oph1Iug0ohh0ohh51KDgcbJRxtFXCwUcLBRgHHfz52c7CBXC4T+yUTmdR3332HkJAQBAQEIC4uDgsXLsT48ePrXMYNhYVMZCIGg4CsIi1S80twLa8UqfmlSL3pv9nFWmi0FSjXm+6glVIug5eTLfxc7ODnYg9fF7vb/t/H2Q4KljZZkYyMDLz++uvIyMiAn58fHn74Ybzzzjtix+Iha6KGlFVUhsSsYqTmld5WuhkFZdDpazcAxRwo5DJ4qW3h62IHf1c7+Drbo5mXI9r4OaONnzPsbRRiR5QsHrI2HzxkTSSi7CItTqfm4/S1QpxOLcCZ1AJkFJaJHavB6Q0CMgrLkFFYhtirVT8nlwHBno5o6++CNn7OaOtf+c9DbStOWCILxkImqoHsIi3OpBbg1LUCqy7f2jIIwKVsDS5la7A1Ls243NvJFm39ndHG39lY1kEeDsbLSojodixkolvoKgw4cSUXJy7n4XRqAU5fY/nWVlaRFlnx2dgXn21cprZVIqKpK3o390SfFl5o7efEgia6CQuZJE8QBJxPL8LhxGwcTryO48m5KC1vvIv/papYW4FDF3Nw6GIO3t1xAZ5qG/Rq7mksaF8XngMlaWMhkyTlanTYH5+FAwnZiErMQU6x7t4PogaVU6zDltg0bImtPNTd3Fv9Tzl7okeIBxxt+euJpIXf8SQZ59IKsfdCJvZeyELs1XwYeH2BWUnMKkZiVjHW/HUZKoUMEU3d0Ke5J3q38ETHQFce3iarx0ImqyUIAo4m52JrXBr2XchCWgHPA1uKcr2AY8m5OJaci492J8DX2Q4PhPthZAc/dGp656kViSwZC5msTnKOBpuir+G3mFRcyysVOw41gIzCMqyOSsbqqGQEuNpjZHs/jGzvj/AmLmJHM1vha8NNtq3TU0+bbFvWjIVMViG/RIetcWnYGJ2K2Kv5YsehRpSaX4ovDl7CFwcvIdjDAWMjAvBQpyYIdHcQOxo1Ip1OBxsbG7FjNCrefpEsVrnegMizGfjPuhPo9s6feG3LWZaxxFy+XoIVey6i74f7MH7V3/jxWAqKysrFjkU1UFRUhEmTJsHR0RF+fn5Yvnw5+vfvb7wfcnBwMN5++21MmTIFzs7OmDlzJgDg8OHD6NOnD+zt7REYGIi5c+dCo9EYn1er1WL+/PkICAiAo6Mjunfvjv379xs/v2bNGri6uiIyMhKtW7eGWq3GsGHDkJ6ebsqXXy0WMlmcmJQ8vLb5DLq9swf/WXcSkWczLXJKSmo4ggAcu5yLFzedRtd39uC/G2Jw+GKO2LHoLp577jlERUXh999/x+7du3Ho0CFER0dXWWfp0qXo0KEDYmJi8NprryEpKQnDhg3DQw89hFOnTuGnn37C4cOHMWfOHONj5syZg7///hs//vgjTp06hYcffhjDhg3DxYsXjeuUlJRg6dKlWLduHQ4ePIiUlBTMnz/fZK/9TjiXNVmEorJy/HjsKjYcT8GlbM29H0AEIMzHCdN7N8OYCH/YKq1vzu27zZ9szueQi4qK4OHhgR9++AHjxo0DABQUFMDf3x8zZszAihUrEBwcjIiICPz222/Gxz355JNQKBT44osvjMsOHz6Mfv36QaPRICsrCyEhIUhJSYG/v79xncGDB6Nbt25YsmQJ1qxZg2nTpiExMRGhoaEAgM8++wyLFi1CRkZGnb8GnMuarF5GQRm+jUrGD8dSUFRWIXYcsjDxmUV4YeMpfBB5AY/1CMLkHkGcZ9sMXLp0CeXl5ejWrZtxmYuLC8LCwqqs16VLlyofx8XF4dSpU/j++++NywRBgMFgQHJyMi5dugS9Xo+WLVtWeZxWq4WHh4fxYwcHB2MZA4Cfnx+ysrIa5LXVBwuZzNKFjEJ8efAStsalmfR2hGSdcop1WLHnIj7fn4SxHQMwvU8ztPRxEjsW3YOjo2OVj4uLi/Gf//wHc+fOvW3dpk2b4tSpU1AoFDh58iQUiqpHRNRqtfH/VSpVlc/JZDKYw8FiFjKZlb8Sc/DFwUs4kJB975WJaklbYcBPJ67ipxNX0aeFJ57sE4J+Lb3EjiU5ISEhUKlUOH78OJo2bQqg8pB1QkIC+vbte8fHderUCefOnUPz5s2r/XxERAT0ej2ysrLQp0+fRsnemFjIJDq9QcC2U2n46tAlnEktFDsOScSNebVb+qjxRK9mGBsRADuV9Z1nNkdOTk6YOnUqFixYAHd3d3h7e+ONN96AXC6/64xsCxcuRI8ePTBnzhw8+eSTcHR0xLlz57B79258+umnaNmyJSZNmoQpU6bgo48+QkREBLKzs/Hnn3+iffv2GDFihAlfZe2xkEk0JboK/HjsKr45nIzUfE7gQeJIyCzGi5tO48PIeEy9LxjTezezinm0zX2yjmXLluGpp57CyJEj4ezsjBdeeAFXr16964Co9u3b48CBA3jllVfQp08fCIKA0NBQPPLII8Z1vv32WyxevBjPP/88UlNT4enpiR49emDkyJGmeFn1wlHWZHKlOj2+OnQJ3xxORkEprxkl8+KptsHcQS0woVtTqBTmfWVoQ4zsNRcajQYBAQH46KOPMH36dLHj1BpHWZNFMRgE/HLyKpbtTkBmoVbsOETVyinW4fUtZ7H6cDKeHxKGke39eGOLRhATE4MLFy6gW7duKCgowKJFiwAAY8aMETmZeFjIZBL747Pw3o4LuJBRJHYUohq5fL0E/90Qg68OXcKLw1rhvuaeYkeyOkuXLkV8fDxsbGzQuXNnHDp0CJ6e0v0685A1NapzaYV4d8d5HOKsSWTh+rTwxIvDW6Gtv/nc0MKaDllbOh6yJrOVUVCGpbvisSn6Gu87TFbh0MUcHE48jNEd/DF/SBhvZkENjoVMDapYW4FV+5PwzeFklJbrxY5D1KAEAdgSm4YdpzMwsXtTzB3UAu6O1n0HIjIdFjI1iAq9ARuOX8XHexKQU6wTOw5Ro9LpDVjz12VsPHkNz97fEo/fFwy5nAO/qH5YyFRvx5Jz8cpvp3Exq1jsKEQmVaStwKJt5/B7XBref6g9wnw5HSfVnXlfZEdmraisHC//dhqPfPk3y5gkLfZqPkauPIRluxOgq+CtQKluWMhUJ5FnMzB42QH8cDQFHKdPBJTrBXzy50U88MkhnLySK3YcskAsZKqVrMIyPLXuJP6z7iQn9yCqRmJWMcat+huvbzmDYi1vGdrY+vfvj3nz5okdo0HwHDLV2MaT1/DW1rMo5H2Jie5KEIDv/r6CPecy8c6D4RjQytvkGc63am2ybbW+cN5k27Jm3EOme8ou0uLJtSfw/C9xLGOiWkgrKMO0Ncfx3w0xuF7MI0p3o9Px6gwWMt3VtlNpGLL8APaczxQ7CpHF2hqXhsHLDmDjyWtiRzEb/fv3x5w5czBv3jx4enpi6NChOHPmDIYPHw61Wg0fHx9MnjwZOTn/zvKn0WgwZcoUqNVq+Pn54aOPPhLxFTQ8FjJVK1ejw+zvozHnhxjklfCOTET1lVdSjud/icNT607yLmf/WLt2LWxsbBAVFYX33nsPAwcOREREBE6cOIGdO3ciMzMT48ePN66/YMECHDhwAFu2bMGuXbuwf/9+REdHi/gKGhbPIdNtjl66jjkbYpBdxENsRA1t59kMnE4twMqJEejU1E3sOKJq0aIFPvjgAwDA4sWLERERgSVLlhg/v3r1agQGBiIhIQH+/v745ptvsH79egwaNAhAZaE3adJElOyNgYVMVXxxIAkfRsajghNQEzWa1PxSjF/1N54b0hKz+oVK9vaOnTt3Nv5/XFwc9u3bB7Vafdt6SUlJKC0thU6nQ/fu3Y3L3d3dERYWZpKspsBCJgCVk3ws+OUUdp7NEDsKkSRUGAR8sDMefyddx/JHOsJTbSt2JJNzdHQ0/n9xcTFGjRqF999//7b1/Pz8kJiYaMpoouA5ZEJ8RhHGfBrFMiYSwaGLORj+8SEcvXRd7Cii6tSpE86ePYvg4GA0b968yj9HR0eEhoZCpVLh6NGjxsfk5eUhISFBxNQNi4UscZtjUjH2f1G4lKMROwqRZGUXaTHp66P4+tAlsaOIZvbs2cjNzcWECRNw/PhxJCUlITIyEtOmTYNer4darcb06dOxYMEC7N27F2fOnMHjjz8Oudx6aoyHrCVKV2HA29vOYd2RK2JHISJUHsJevP08olPy8MG4DlDb1u/Xs6VN1uHv74+oqCgsXLgQQ4YMgVarRVBQEIYNG2Ys3Q8//NB4aNvJyQnPP/88CgoKRE7ecGSCwJmIpSYtvxRPfx+N2Kv5YkchomqEejli1WOd0cLn7nePKisrQ3JyMpo1awY7OzsTpaPqNMR7YT37+lQjhy5mY+TKwyxjIjOWlK3B2P9F4Y/T6WJHIRNiIUuEIAhY+edFTF19DLkaTlFHZO40Oj1m/xAt6fPKUsNzyBJQrjfghV9P4beYVLGjEFEtCAKwePt5pOWX4dURrSGXS/N6ZangHrKVK9FV4Mm1J1jGRBZsdVQy/rshBtoKvdhRqBGxkK1YrkaHCV8dxYGEbLGjEFE9bT+djsnfHENBNXPLc2yu+BriPWAhW6lreSUYt+ovxHHwFpHVOJaci3Gr/kJqfikAQKVSAQBKSkrEjEX49z248Z7UBS97skIXMgoxdfUxZBby5hBE1sjH2RbfPt4NbfydkZ6ejvz8fHh7e8PBwUGy82KLRRAElJSUICsrC66urvDz86vzc7GQrczRS9cx47sTKCyrEDsKETUiJ1slVk3ujPtCPZCRkYH8/HyxI0maq6srfH196/UHEQvZikSezcDcDTHQVhjEjkJEJqBSyPDhuA4YGxEAvV6P8nLeZ1kMKpUKCoWi3s9j1YXcv39/dOzYEStWrKj288HBwZg3bx7mzZtn0lyN4YejKXhtyxnoedtEIkmRyYAFQ8PwdP/mYkeheuJ1yFbg4z0XsXyP9dzxhIhqThCAD3bGo6isAguHtRI7DtUDC9nCvfn7Waz567LYMYhIZJ/vT4KtUo55g1uKHYXqyOove6qoqMCcOXPg4uICT09PvPbaa9VeL3b58mXIZDLExsYal+Xn50Mmk2H//v3GZWfOnMHw4cOhVqvh4+ODyZMnIycnxwSv5Hbv7jjPMiYioxV7LuLz/Ulix6A6svpCXrt2LZRKJY4dO4aPP/4Yy5Ytw9dff12n58rPz8fAgQMRERGBEydOYOfOncjMzMT48eMbOPW9rfzzIr44wDluiaiq93dewOrDyWLHoDqw+kPWgYGBWL58OWQyGcLCwnD69GksX74cM2bMqPVzffrpp4iIiMCSJUuMy1avXo3AwEAkJCSgZUvTHCpafTgZH+3mOWMiqt6ibedgq5JjUvcgsaNQLVj9HnKPHj2qXBfWs2dPXLx4EXp97eeEjYuLw759+6BWq43/WrWqHESRlGSaw0Q/H7+Kt7efM8m2iMhyvbr5DH45cVXsGFQLVr+HXFNyeeXfJjefX771mr7i4mKMGjUK77///m2Pr8/sLDW17VQaXtx0CtZ7oRoRNRRBABZuPAVblQKjO/iLHYdqwOoL+ejRo1U+PnLkCFq0aHHbRdxeXl4AgPT0dERERABAlQFeANCpUyds3LgRwcHBUCpN+6XbeyETz/4UC15mTEQ1ZRCA536KhY1CjmHtfMWOQ/dg9YesU1JS8NxzzyE+Ph4bNmzAypUr8cwzz9y2nr29PXr06IH33nsP58+fx4EDB/Dqq69WWWf27NnIzc3FhAkTcPz4cSQlJSEyMhLTpk2r0yHwmvorKQez1kejXM82JqLaqTAImLshBnsvZIodhe7B6gt5ypQpKC0tRbdu3TB79mw888wzmDlzZrXrrl69GhUVFejcuTPmzZuHxYsXV/m8v78/oqKioNfrMWTIEISHh2PevHlwdXU1HvJuaDEpeZix9gSnwySiOtPpDXhqfTQOXeStWM2ZVU+daenOpRViwldHUFDK+WmJqP7sVQr8MKM7Ipq6iR2FqmH1e8iW6lJ2MaasPsoyJqIGU1qux8x1J5FeUCp2FKoGC9kM5Wl0mLbmOHKKdWJHISIrk12kxYzvTqBU13jjXqhuWMhmplxvwKzvT+LK9RKxoxCRlTqTWojnf4mtdhphEg8L2cy8vuUsjlzKFTsGEVm5P05nYPmei2LHoJuwkM3I6sPJ2HAsRewYRCQRK/dexLZTaWLHoH+wkM3E/vgsvPPHebFjEJGECAIw/5c4nL5WIHYUAgvZLFzKLsZ/N8RAz2m4iMjEysoNmPHdCWQVlokdRfJYyCLTaCvwn3UnUVRWIXYUIpKojMIyzFh3EmXlHHktJhayyBb8GoeLWcVixyAiiYu7mo+FG0+JHUPSWMgiWnUgCX+czhA7BhERAGBLbBr+ty9R7BiSxUIWSVRiDj6MjBc7BhFRFUt3xfNGFCJhIYsgNb+Ug7iIyCxVjrw+xUFeImAhm5jBIOCZDTHI1XBaTCIyT7kaHZ79ORYG7jSYFAvZxL44eAknruSJHYOI6K6iEq9j1cEksWNICgvZhM6lFWL57gSxYxAR1ciyXQmISeEOhKmwkE1EW6HHcz/HQqc3iB2FiKhGKgwCnvkxFkVlvA2sKbCQTWTZrgRcyCgSOwYRUa2k5JbgjS1nxY4hCSxkEzh66Tq+OnRJ7BhERHWyKSYVO8+kix3D6rGQG1mxtgLP/xIHDlYkIkv28m9nkF2kFTuGVWMhN7JFW8/iWl6p2DGIiOolV6PDS5tOix3DqrGQG9Huc5n4+cQ1sWMQETWIPecz8fPxq2LHsFos5EZyvViLlzZxonYisi6Ltp3D1dwSsWNYJRZyI3lp02nkFHM2LiKyLsXaCryy+YzYMawSC7kR/HryGnad4+TsRGSdDiZkI/Is71TX0FjIDaygtBxL/jgvdgwioka1aOs5lJXrxY5hVVjIDWz57gTeOIKIrF5qfik+472TGxQLuQElZBZh/ZErYscgIjKJVQcv4cp1jdgxrAYLuQEt2noOFZwBhIgkQldhwFtbz4kdw2qwkBtI5NkMHE7METsGEZFJ7b2QhT0cxNogWMgNQFuhxzvbOZCLiKRp0TYO8GoILOQG8NXBS0jhhfJEJFEpuSX44gBvoFNfLOR6yigow2f7k8SOQUQkqs8PJHIGr3piIdfTuzvOo0THQzVEJG1l5QYs2sYBXvXBQq6HE5dzsSU2TewYRERmYfe5TOyLzxI7hsViIdeRwSDgza1nxY5BRGRW3t56Dnpe/lknLOQ6+vnEVZxJLRQ7BhGRWbmUo8GW2FSxY1gkFnIdlJXrsWx3gtgxiIjM0qd7E7mXXAcs5Dr4+cRVZBVpxY5BRGSWLuVo8Hsc95Jri4VcS+V6A6+3IyK6h5V7E2HgXnKtsJBraVP0NaTml4odg4jIrF3K1mDrKV6FUhss5FrQGwR8zklAiIhq5JM/L3IvuRZYyLWw7VQaLl/nTDRERDWRxL3kWmEh15AgCPgfb8ZNRFQrPJdccyzkGoo8m4GEzGKxYxARWZTErGJsP50udgyLwEKuoU+5d0xEVCcr9/Jcck2wkGtg34UszspFRFRHCZnF+OMM95LvhYVcAyv3XhQ7AhGRRVv5ZyIEgXvJd8NCvoe/knIQnZIvdgwiIosWn1mEvRd4J6i7UYodwNxxZDVw7fMnoC+8/QdJHTECHkNmQV+ch7z9q1F6OQaCrhQq9yZw7jkejmG97vicRTF/oCjmD1QUZAIAVJ5N4XrfBNiHdvl3ndid0JzbD11mEgRdKQKf+RFyO3XDv0AiMonvj6ZgUGsfsWOYLRbyXZxPL0RU4nWxY4jOb+pywGAwfqzLuYKsn16FY6vKws3ZvgwGbTG8/+81yB1coDm3Hzlb3odq6nLY+IRW+5wKJw+49ZsKpZs/AKD4zJ/I2rQYfo9/DBuvIACAUK6FfUhn2Id0Rv6BtY38Komose2Pz0JqfikCXO3FjmKWeMj6LtYfuSJ2BLOgcHCBQu1m/FeaeAxKVz/YBoYDALSp5+HUaRRs/cOgcvWF632PQm7rCG3GnY8uODTvDvvQrlC5B0DlHgC3vlMgt7GDNi3euI5z1zFw6fEwbP3DGv01ElHjMwjAj8dSxI5htljId6DRVmBLLGeYuZWgL4fm3H6o298PmUwGALANaI2SC4egLy2CIBigOXcAgl4Hu6bhNXtOgx6acwdgKC+DbUCrxoxPRCL76fhVVOgN915RgnjI+g42x6aiWFshdgyzU5JwBIayYji2G2Rc5jVmIbK3vI9rn0wA5ArIlLbwevAVqP45HH0nuuzLyFg3H0KFDjIbe3g/+ApsPJs29ksgIhFlFWmx53wmhrXzEzuK2eEe8h18f4SHVapTfGoX7EM6Q+nkYVyWf2g9DFoNvB9ZDL+py+HcdSyyt7wPXfbluz6Xyj0AftM+ge+UZXCKGI6c7cuhy+HXncjafX+UP+fVYSFXIyYlD+fSORHIrSoKslB2JQ7qDkONy8rz0lEUvQ0ew5+BfXBH2HiHwLX3RNj6NkdR9La7Pp9MoYLKzR+2vs3h1u9x2Hg3Q9GJ3xv7ZRCRyA4n5uDKdY3YMcwOC7kaP/Cvt2oVn94NhYML7EO7GpcJFVoAgEx2y7eSTA7UchIAQRAg6MvrnZOIzJsgAD9wcNdtWMi30GgrOBF6NQTBgOLTe+DYbhBkcoVxucq9CZRufrge+Sm0afEoz0tH4bFNKLscC4cWPYzrZf74MgpPbjV+nHdgDcqunkFFQSZ02ZeRd2ANtCmn4dimv3EdfXEedJmXUJ5X+X7osi9Dl3kJ+tKixn/BRNSofj1xDboKDu66GQd13WL76XSU6PRixzA7ZZdjoS/Mhrr9/VWWyxRKeI97E/kH1iJr49sQykuhdPWDx4hnq+xJl+dlwLb039MAek0BcrYtg16TC7mtI2y8guE9fhHsm0UY1ymK/QMFURuMH2f+8CIAwOOBeVCHD26sl0pEJnBdo8POsxkY3eHugz+lRCZwctEqxq/6G8cu54odg4jI6nVv5o6f/tNT7Bhmg4esb3LluoZlTERkIkeTc5GYxfvM38BCvsmvJ6+JHYGISFJ+PnFV7Ahmg4X8D4NBwEYWMhGRSW0/xUG0N7CQ/3E0ORdpBWVixyAikpTU/FLEXs0XO4ZZYCH/Y/e5TLEjEBFJ0h+81BQAC9loz3kWMhGRGFjIlVjIAOIzipCSWyJ2DCIiSbqWV4o4HrZmIQPcOyYiEhv3klnIAHj+mIhIbDvOZIgdQXSSL+SsojLEXcsXOwYRkaSl5JYgIVPa89RLvpD/PJ9V25sSERFRI5D66UPJF/IeHq4mIjILUv99LOlCLtXpcTgxR+wYREQEIPZqPnKKtWLHEI2kC/ngxWxoeT9OIiKzYBCAvReyxI4hGkkXstQPjxARmRsp/16WbCEbDAL2xUv3LzEiInP0V9J16A3SHGkr2UKOuZqHnGKd2DGIiOgmxdoKnE8vFDuGKCRbyFGJ18WOQERE1ThxOVfsCKKQbCGfvJIndgQiIqrGcYn+fpZkIQuCgJgUab7hRETm7uRlaf5+lmQhJ2UXo7CsQuwYRERUjYzCMlyV4B34JFnIPFxNRGTejkvwPLIkCzn6Sr7YEYiI6C5YyBIRzfPHRERm7bgEzyNLrpALSsuRmF0sdgwiIrqLpOxi5GmkNVeE5Ao5JiWPt1skIjJzggCckNh4H8kVcnRKvtgRiIioBqQ2QYjkCpnXHxMRWQapDeySVCEbDAJiuYdMRGQRzqQWoqxcL3YMk5FUISdkFaFIywlBiIgsgU5vwMVM6QzClVQh8/pjIiLLkiShq2IkVcjxGdK8pRcRkaViIVup5OvSmxuViMiSXcrWiB3BZCRVyJdzpPPGEhFZA+4hW6FyvQGp+aVixyAiolpIztHAYJDGbE6SKeSU3BLoJfKmEhFZC22FdHamJFPIPFxNRGSZpHL/AckUcjILmYjIIiVlsZCtyhWOsCYiskiXJLJDJZlCvnxdGm8oEZG14R6yleEhayIiy5QkkWuRJVHI2go90iQySo+IyNrkFGtRWFYudoxGJ4lCvppbAl7xRERkuaRw2FoShZycwwFdRESW7Fqe9R/llEQh8xpkIiLLll+iEztCo5NEIacVWP9fVkRE1ixXw3PIViFXY/1/WRERWbM87iFbBxYyEZFlYyFbCSm8kURE1kwKO1aSKOTcYut/I4mIrJkUdqykUcgSeCOJiKxZHgd1Wb5SnR5l5QaxYxARUT1wD9kK5Jda/5tIRGTtSnR6lJXrxY7RqKy+kIvLKsSOQEREDcDa95KtvpCLtCxkIiJrYO3nka2+kDUsZCIiq8A9ZAvHQ9ZERNbB2q9Ftv5C5h4yEZFVsPZ7IrOQiYjIIuit/Mb2Vl/IvAaZiMg6sJAtnEwmdgIiImoILGQLp2AjExFZBRayhWMfExFZB73AQrZoCjkbmYjIGuj11l3ISrEDNDYWMknBCJ9sBNpfh2+WHu55ZZDBun9xkTT5FtsCaCF2jEZj9YUs5zFrkoBQ2yJMKv0an3SMwN/Xk9G9xBfh+U4IyhLgejUfiuRrEErLxI5JVC+ezT0BDBY7RqNhIRNZgW05/njOkIZ3otNwNiAcHwQA29QxQBMAnQAFZIjQNkXnIg+0uK6CT1op7JIzIGRmix2dqMZkcus+y2r1hayw7vePCABwqcQOFd5NoSxMQdvU01ibCuxu2RfLVGW4VpIBPQScsE3DCds0wBNAGIABgJ/eDfeV+KNtrgMCswxwScmF7HIqBJ11T1FIFkpm3b/Qrb6QuYdMUpHp1BYBhSnGj+9POIh+Clt833Ygviy7jOJyzW2PSVcUYaNTPDY6AQgC0BWwERToqm2GiEI3NM9RwitVA5vkdAjXc033YoiqY+V7WFZfyBzURVJxVtYCAdhRZZmNXotpp3ZgjKMn/hfWHRvzz0Ev3P0m7zqZHlF2VxFldxXwBtCmcnlwhSd6aHzRJtcBAZnlcLqSC6SkAhWcnhYAvrx+HXuKi3BJq4OdXIaO9vZ43ssLzWxs7/q473Jz8WN+PtIryuGmUGCIkxOe9fSC7T+HZzUGPT7JycGeoiLk6vVobWuHl7y9EW5vb4qXZVbktnZiR2hUVl/I3EMmqTioCcSQO3zOXZOD16K3Y4JPGJb6ByEq/0Ktn/+yMh+XXfIBFwDNAPQAHAwqdNcGo2OBC0Ky5fBILYbqUiqEgsJ6vBLLdKKkBBNcXdHOzh56QcCKnGw8efUqtjYLgcMdzn1uKyzAspxsLPb1RYS9PS7ryvFyejpkABZ6+wAAXsvIwEWtFu/7+cNLqcTWwgJMv3YVW4ObwUelMuErFJ/cwbr/CLH+QuYeMknE9hwfvK1SQma48x5r88x4rMqMx6HQnljqIMOl4mv12maJvBz77C9jnz0AXwDhlcvDyn3RTeONVtft4J+hg/pKDoSraYDBeueW/zIwsMrHS3z90DspEefKytDFwaHax8SWliLC3h4jnV0AAAEqGzzg7ITTZZUj4ssMBuwuKsKnAU2MzzHH0wv7i4vxY34+nvHyasRXZH7kd/g6WgurL2ROnUlSkVeuRJl3S9hfP3fPdfsk/Y2eciV+aTMIn5WnIV9X0KBZ4lU5iHfNAVwBhALoBbgIDuhR6o/2+c4IzpbB/WohlMnXIBTffm7bGhT988eHi0Jxx3U62ttja2EhTpWWor29Pa7qdDik0WCUszMAQA8BegA2t/wes5PLEV1a0mjZzZWMhWzZeA6ZpCTVoTWa16CQAUBpqMCEM5EYYe+CL1v1wQ+F51FuaLz7zRbIyhDpcAmRDgD8AXQAZALQrtwfXYu8EZZrA990LRwuZ0FIywAseJpEgyDgvaxMdLK3RwvbO59DHunsgjy9Ho+lXAEAVAB4xMUV//HwBAA4yhXoaGePVddzEGprAw+FEtsLCxFbWoqmKhtTvBSzIrdnIVs0VwdpnWMhaYvVh6J5LR/jXFqA+THbMN6zGZYFtsGf+TUr9IYgyIDTNlk47ZEFeKByEqa+gKfBGT1K/BCep0ZQFuB2NR/yy5YzucnbmZm4qNVifdOgu653rESDL69fx+s+vmhvb4cUXTmWZGXi85wczPKsLOX3/PzwakY6+iclQQGgjZ0dHnByxjmtZXwtGhIPWVs4T7X0/ook6fqzqAnG1fGxTXOSsSInGceDuuBDFwecL7rckNFqJUeuwTZ1IrapAQQC6Fw5uUmnG5Ob5KjgnVYKu8vmN7nJ4swMHNAU47vApvC9x6CrT3JyMNrZBeNcXQEALW3tUGIw4M3MDPzHwwNymQxNbWzwXdMglBgM0BgM8FIq8VxaKppIbEAXwEFdFs9TffdLDoisyZ7rHhAcHSGr5prjmup65QR+lMnxe+uB+ETIQXaZeVx/rIeA47ZpOH5jcpNWlcvNZXITQRDwTlYm9hQXY01gUzSxuffOQJnBgFvPqt0Y93LrAXsHuRwOcjkK9HpEaTR43su7gZJbDnPdQ+7fvz86duyIFStW1Ot5rL6QXexVUClkKLfyu4QQAUC5QYYi97ZwzjxWr+eRCwaMPbcHQ2wcsbpNf6wtTkCZXttAKRuWuUxu8nZWJrYXFuLTgCZwlMuR/c/12U5yOez+uezpxfQ0eCuVeO6fMu2vVmNtXh5a29qhvZ0dUsrL8UlONvqr1cZiPqwphgCgmcoGKeXl+DA7C81sbPCgi0ujvRZzJXdyEjtCo7L6QpbJZHB3tEFmoXn+MiFqaMk2YeiA+hXyDQ46DebEbsc41yZYEdIef+SdhWABd5ISY3KTH/PzAQBTr6ZUWf6Ory8edHEFAKSXl1e55+1THp6QQYaPc7KRVVEBN4UCA9RqPOP57+VMRXoDVuRkI6OiAi5yOYY4OeEZTy+oJHYFiczGBgq1ulG3odPpYFODIxuNxeoLGQA8HG1ZyCQZx8qboUMDP6dv/jW8F30Nk5q0x4eenogpSGzgLZhGY05uci6s1T3XWXvLIC+lTIbZnp6Y/c8AruoMd3bG8H8ug5Iyhbt7gz9n//790a5dOyiVSqxfvx7h4eFYuXIlFixYgEOHDsHR0RFDhgzB8uXL4fnPe6TRaDBr1ixs2rQJTk5OmD9/foPlkUQhezrZAulipyAyjR15AZjRSM8dfu0UvrsG7AzrhxXKEqSWZDbSlkyHk5tYBoW7W6M879q1azFr1ixERUUhPz8fAwcOxJNPPonly5ejtLQUCxcuxPjx47F3714AwIIFC3DgwAFs2bIF3t7eePnllxEdHY2OHTvWO4s0CtmRI61JOqILnGBw94K8pPFGHw+LP4CBClt813Ygvi5NhqbC+iapuOPkJiX+6FDgjOAswP1aIRSXUiForHNyE3OidPdolOdt0aIFPvjgAwDA4sWLERERgSVLlhg/v3r1agQGBiIhIQH+/v745ptvsH79egwaNAhAZaE3adKkQbJIopA9eOkTScx1l3bwKtnXqNuw0Wvx5KkdeFDthU9bdsNvNbhxhaUrkJUh0vESIh1ROblJx8rJTcLLA9C12AthOTbwSS+rnNwkPdOiJzcxN8pGmia0c+fOxv+Pi4vDvn37oK7mXHVSUhJKS0uh0+nQvXt343J3d3eEhYU1SBZJFDIvfSKpSVC2hBcat5Bv8CjOxhvR2zHBpxU+9A/Ekfx4k2zXXAgy4JRNJk65ZwLuAFoC6Fc5ucl9Jf5ol6dG0yzB4iY3MTdK78a5zMvR0dH4/8XFxRg1ahTef//929bz8/NDYmLjjp2QRCF7sJBJYqJKg9DLxNtsmXkBX2VewMHQ+/ChvYDLmlQTJzAvOXINfldfxO8WOLmJOWqsPeSbderUCRs3bkRwcDCUytvrMTQ0FCqVCkePHkXTpk0BAHl5eUhISEC/fv3qvX1JFDJn6yKp+T3HDy+ItO2+SX/hPrkSP7UdhM91qSjQSe9WjHdyp8lNAvTu6FHiJ/rkJuZM6dP4E6HMnj0bX331FSZMmIAXXngB7u7uSExMxI8//oivv/4aarUa06dPx4IFC+Dh4QFvb2+88sorkN/h9pq1JZFC5h4yScu1MluU+zSDqiBZlO0rDRWYdDoSI+1dsapVL/xYeB4Vd7ktpNSlKgqx0alQ9MlNzJlNAw2cuht/f39ERUVh4cKFGDJkCLRaLYKCgjBs2DBj6X744YfGQ9tOTk54/vnnUVDQMHdLkwmC9Y86yCgoQ493/xQ7BpFJHWr+PQKvbRc7BgDgimcIPmraEvvyTHfjCmsVXOHaaJObmLOWJ05AoXa894oWTBJ7yN5OtrBTyVFWzusHSTrOoDkCxQ7xj6CcS/gk5xKONuuKD53sEF90RexIFutOk5v0KAtGx0JXNMuS/Tu5SaF1nC5QuLtbfRkDEilkuVyGUC81zqZZxzcnUU0c0DTFcLFD3KJ78nH8LJNjc+uBWGnIQY5WmodfG1qJvBx7HS5jrwMqJzdpX7m8VbkvuhX7oFWuLfzSdVBfyYZwLd3iJjexCTSXPy0blyQKGQBa+jixkElStmd74V0bFWSGcrGjVCEXDPi/c3swzFaNr1v3w3fFCdCa6Y0rLN0FVQ4uuOUAbqic3KQ34GJwQM/SALQvcLKYyU1U/4xotnaSKeTm3o07KTmRuSmqUKLUtxUcck6LHaVaDtpizI3djofdArG8WTh25J0RO5IkFMjLsNMxCTtrMrlJWobIaStxD9nKtGAhkwRdtW+NMJhnId/gl3cVH+RdxaTADvjA3R2nCpPEjiQ5d57cxOX2yU2Sr0EoM+3kJqqmLGSr0tLHuu+jSVSdGH0oGmZSv8bX4Wocvr8K7GjVH8vlRUgv5WQZYjOXyU1sJHLIWhKXPQGAwSCg9es7oa2wrMEMRPUx0CMXqzVzxI5Ra1qlXeWNK0ouocQKb1xhjQL0zv9ObpKph0tKHnD5GlBe/zEMLY/8DYWra/1DmjnJFDIAPPDxIZxL58Aukg6FzIBE51mQaYvEjlInOU4+WNmiCzbnn4VB4B/TlsZWUKCr1h8Rhe4IzVbAK7W4cnKT3LwaP4fS2xstDh5oxJTmQzKHrAGghY+ahUySohfkKHRtC5fMI2JHqRPPoky8Fb0dE33b4ENffxwtSBA7EtWCVqbHYburOGx3FfAG0LZyeUiFF7prfNE61x4BGeVwSrkOpKRVO7mJbcuWpg0tIkkVMs8jkxQl2YShEyyzkG8IyziHrzPOYV+L3vjItgJXNGmiZcn8LRPZW6qeL7XxtUHL96ovjoITBcjelg1dpg6CXoCtjy08hnnArZebcR1BEJD1WxbyDuRBX6KHQwsH+E/xh62vdU77e0mZh0suef9ObtLzzpOb2IaxkK0SL30iKTqma4ZOYodoIAMuHkZvuQo/th2EVbqrKNSJcyjeNsAWwQuCjR/LFLI7rqtwVMB7lDds/GwgU8pQFFuE1G9SoXRWwim8cich548cXN99HU1mNIGNlw0yN2Xi8keX0eKdFpDbNMyNC8zdnSY3+ahnWwwRM5gJSeOd/gf3kEmKtuf6ix2hQakM5Zh8eif+uJqGSa7toZSZfr9CJpdB5aoy/lM63TmDurUazp2dYedvB1tvW3gO8YRdoB1KEioHqwmCgOu7rsN7tDecOznDLtAOTWY0QUVeBQqjeYqtuXcrsSOYjKQKuam7A2yVknrJRDhdpIbe0VfsGA3OpSQPL8Zsw6YiGfq5tjbptrWZWlyYdwHxC+JxddVV6K7X7DaJgiCg+FwxtOlaOIZVzs1cnl2OioIKOLb5d65mhYMC9qH2KE0qbZT8lsJB6YBgl2CxY5iMpA5ZK+QyhHipcZ4Du0hiclzawkdjHrMuNbRm2Un4NDsJfzfrhg/VNrhYnNKo23MIdUCTJ5vA1s8W5fnlyNqSheQlyWi+uDkU9opqH6Mv0SP+2XgYKgyQyWTwn+IPdbvKU2gVBZUDmZQuVX8dK52VKC8wr2lPTa2VeyvIZdLZiZLOK/1HeICz2BGITC5eYf0DY3omH8MvZ/7GGw5h8LB1u/cD6sipvRNcurnALtAOTuFOCH42GPoSPQqO3fmeuHI7OUIXhSL09VD4POSD9A3pKD5f3GgZrUVrD9Me+RCb5Aq5S7C72BGITO5waZDYEUxCIegx7uxubE++hOmu4bBVNP4oZYWjAra+ttBl3fmwtUwug62PLeyD7OE53BMuXV2Qsz0HwL97xjf2lG+oKKyAykXVeMEtQBuPNmJHMCnpFXJQ4/3lTGSufs/2hYA7jwS2No7aIsyL2Y4tuVoMc2vbqNvSl+mhy9JB5Vrz8hQEAYZ/7s+u8lJB6aKE5ty/d1vSl+pRmlQK+1D7Bs9rSdq4s5CtWoiXGp5qG7FjEJlUhtYG5a6hYscwuYDcFHwYvQPrKjwQ7hzSIM+Z/mM6NBc00GXrUHKxBCkrUwA54NLdBQBw7ctryPjl3/P12duyUXymGLosHcrSypCzIwf5f+XD9T5XAIBMJoPHEA9kbc1CYUwhyq6W4dqX16B0U8K5k3RPsdkr7dHMpZnYMUxKUoO6bujU1A27zmWKHYPIpNLUbRCcnyh2DFF0vBqD76/KsL3VAHwsL0BGPW5cUZFbgaurrkJfrIfCSQHHFo4IeS0ESufKX6e66zrcfDDCoDUgbV0aynPLIbeRw8bPBoEzA40FDgCeD3hWrvdtWuXEIC0dEPx8sGSuQa5OJ59OUMirHyRnrSQ1l/UNXx28hHf+OC92DCKTWhl6AqNSl4kdQ3RlKnusaTMAq0uSUFoh7cuKzNn8LvMxte1UsWOYlCT//OoSzPPIJD37iqVxT9l7sSsvxVNxf2B7ZgHGuoVL6rIaS3Kf/31iRzA5SX4ntgtwgaONtA6FEEXmeEEwwahjS+FVmIG3o7fjx1IHdHFpIXYcuomXvRdauEnvPZFkIasUcnRtxsufSFo0ejlK3KQzDWFNtU4/h29j/8QKZRCaOviJHYcA9PTvKXYEUUiykAGgV6in2BGITC7FXloTLdTGoIuHsPlCDOY7tYWTijeiEVMPvx5iRxCFZAu5Z6iH2BGITC5a3zCX/lgrlV6Hqad2YHtqJh51DRflxhVSJ4OMe8hS09bfGW4O0p4Fh6RnV36A2BEsgpvmOl6J2Y6NxQr0MfGNK6SuhVsLeNpL8wimZAtZJpOhRwj3kklaDua5QrB1ufeKBAAIybqIz2Ii8YXMH83VHKVuClIcXX2DZAsZAO5rLs2/wki6BEGGfLd2YsewOPddOoJfzxzBaw5hcLd1FTuOVevpJ83D1YDEC3lQK2/IpDO9LxEAIEll/Xd+agwKQY/xZ3dj++XLmOYaDhs5p+BtaLYKW3T27Sx2DNFIupD9Xe3RMdBV7BhEJvW3lgO76kNdVojnYrZjc3457m/kG1dITYR3hEnu0GWuJF3IAPBAO153SNKyPZff8w0h8PoVLIvegTV6L7R1ltZNEBqLlM8fAyxkDA/3FTsCkUldKHZAhRNHWzeUziknsSHuIN6xaw5vO45LqQ+pXu50g+QLuYmbAzo04ahTkpZsZx5qbUgyCBh9fi+2JV3A0y7hsFfYiR3J4njYeSDMLUzsGKKSfCEDwPBwHsIjaTkvl948waZgryvBrNjt2JpdjNFu7SADR43W1P1B90Mm8VG2LGQAI1jIJDGHNE3FjmDVfArS8E70H9igdUInl+Zix7EID4Q8IHYE0bGQAQS6O6BdgLPYMYhMZluOLwTedrDRtU07g7Wxe7FMFYwmDhyvcid+jn7o6NVR7Bii40/kP4ZztDVJSLZOBZ0rD1ubyv0JB7HlQhyec2rDG1dUY1jwMMkfrgZYyEY8bE1Sk+bIOZpNyUavxbRTO7EtNQuPuIVDIeM92W8Y3my42BHMAgv5H8Gejmjtx8PWJB1xAs9tisFdk4NXo7fjV40Nerny/tTBzsFo7cE/DgEWchUjeE0yScjeoiZiR5C05pnxWBWzC5/JAxCqlu578UAzDua6gYV8kwd42JokJDLHE4KS18uKrU/S3/j17DG84tgKbjbSmhNBBhlGho4UO4bZYCHfJMRLjTY8bE0SoTXIoXFrI3YMAqA0VODRM7uwLSUFU13bQyWXxr3aO/l0QqATb2t5Awv5FpN68PpMko7Ldjx3Z06cSwswP2YbtuTrMVgCN64Y23ys2BGg0+nEjmDEQr7FgxEBcLJTih2DyCROVPDOT+Yo8PplLI/egdUGb7R2ChY7TqNwUDpgSNCQBn/eoqIiTJo0CY6OjvDz88Py5cvRv39/zJs3DwAQHByMt99+G1OmTIGzszNmzpwJADh8+DD69OkDe3t7BAYGYu7cudBoNMbn1Wq1mD9/PgICAuDo6Iju3btj//79xs+vWbMGrq6uiIyMROvWraFWqzFs2DCkp6fXODsL+RYONko81Em6AyxIWnbm+Ysdge6i65UT+PH0Ybxt3xJedu5ix2lQQ4KHwEHl0ODP+9xzzyEqKgq///47du/ejUOHDiE6OrrKOkuXLkWHDh0QExOD1157DUlJSRg2bBgeeughnDp1Cj/99BMOHz6MOXPmGB8zZ84c/P333/jxxx9x6tQpPPzwwxg2bBguXrxoXKekpARLly7FunXrcPDgQaSkpGD+/Pk1zi4TBEGo/5fAuiRlF2PQRwfEjkFkEpfc5kBemit2DLqHEhtHrG7TH2uLE1Cm14odp97WDFuDzj6dG/Q5i4qK4OHhgR9++AHjxo0DABQUFMDf3x8zZszAihUrEBwcjIiICPz222/Gxz355JNQKBT44osvjMsOHz6Mfv36QaPRICsrCyEhIUhJSYG//79/xA4ePBjdunXDkiVLsGbNGkybNg2JiYkIDQ0FAHz22WdYtGgRMjIyapSfx2arEeqlRq/mHohKvC52FKJGl+faDh6lB8WOQffgoNNgTux2jHMNwMchHbA97ywEWOb+VFOnpg1exgBw6dIllJeXo1u3bsZlLi4uCAurehepLl26VPk4Li4Op06dwvfff29cJggCDAYDkpOTcenSJej1erRs2bLK47RaLTw8PIwfOzg4GMsYAPz8/JCVlVXj/CzkO5jcI5iFTJJwUdkSHmAhWwrf/FS8G52KSQHh+MDLCzEFiWJHqrVxLceJun1HR8cqHxcXF+M///kP5s6de9u6TZs2xalTp6BQKHDy5EkoFFVnWFOr/50KVaWqOjpeJpOhNgehWch3cH8bH/i52CG9oEzsKESN6u+yYPQQOwTVWrvU0/guFdjZsh9WqEqQWpIpdqQaUavUeLjlw43y3CEhIVCpVDh+/DiaNq28YqagoAAJCQno27fvHR/XqVMnnDt3Ds2bVz97XUREBPR6PbKystCnT59GyQ5wUNcdKeQyTOzGS6DI+m27zglxLNmwhAP4/cIpzHNqC0dlww+SamgPt3wYapvGucGGk5MTpk6digULFmDfvn04e/Yspk+fDrlcftebVyxcuBB//fUX5syZg9jYWFy8eBFbtmwxDupq2bIlJk2ahClTpmDTpk1ITk7GsWPH8O6772L79u0Nlp+FfBePdmsKGwW/RGTdkkrsUeHMyRksmY1ei+mndmB7+nWMM+MbV6jkKjzW5rFG3cayZcvQs2dPjBw5EoMHD0avXr3QunVr2NndeVa69u3b48CBA0hISECfPn0QERGB119/vcoArm+//RZTpkzB888/j7CwMIwdO7bKnnhD4Cjre/jvhhhsjUsTOwZRo4oK/Q4BqTvFjkENJMGnFZb6B+Lv/Hixo1QxtvlYvN3rbZNuU6PRICAgAB999BGmT59u0m3XFnf/7mFKzyCxIxA1unMy3hvZmrTMvIAvY3bjf/ImaOYYIHYcAJXzVk9rO63RtxMTE4MNGzYgKSkJ0dHRmDRpEgBgzJgxjb7t+mIh30PXYHe08nUSOwZRozpYwvES1qhv0l/YdO44XlS3hqvIN67o16QfQlxNMzPcjYk/Bg8eDI1Gg0OHDsHT09Mk264PHrKugQ3HUvDSptNixyBqNG6qCkQrp0Em6MWOQo2kwN4VX7TqjQ2F51BhqDD59htjIhBrwz3kGnioUxMEuNqLHYOo0eSVK6F1D7v3imSxXErz8ULMNmwuAAaY+C5fHbw6sIxrgIVcAzZKOeYMrP76NCJrcc2Bd36SgqCcS/gkeie+EXwQ5mSaMTKmOHdsDVjINfRw5yZo6m7+1/gR1VWsPvTeK5HV6Hb5OH4+HYW37FvA07bxblwR7ByMAU0HNNrzWxMWcg0pFXLMHcSRqGS9/iziXc6kRi4Y8H/n/sT25ETMcAmHrcK2wbcxte1UyGWsmprgV6kWHowIQIin471XJLJAe657QFDx+1uKHLTFmBu7HVuvl2G4W7sGe15Pe0+MDh3dYM9n7VjItaCQy/DMYO4lk3UqN8hQZOLBPmRe/PKu4oPoP7C+wg0dnOt/CmNS60mwUdg0QDJpYCHX0qj2/mjp0zjzsBKJLdm2lSjbPXilAqM2lMD/oyLI3irE5gvlVT7/5v4ytPq0GI5LCuH2fiEGf6fB0Ws1v3TnvcNayN4qxLydVW8Wk5RrwIM/lcDrwyI4v1uI8b+UILPY0CCvyZJ1uBqH9XH78IFtCPzsver0HC62Lngk7JEGTmbdWMi1JJfL8MyglvdekcgCnShvJsp2NToBHXzk+N8D1c833NJDgU8fsMPpWWocnuaIYFc5hqwvQbbm3uV5PFWPL07q0N6n6q87jU7AkPUayADsneKAqCccodMDozaUwMDpGQAAwy/sx9aEs5jrXPsbV8wInwEnG06qVBss5Dp4INwXrf2cxY5B1OD+yBVnmsXhLVRYPNAOD7ZWVfv5ieEqDA5RIsRNjrbeCiwbaodCLXAq8+6FXKwTMGlTKb4aZQ83u6p3+4m6qsflfAFrxtoj3EeBcB8F1o61x4k0A/Ymc4KUG2wryjAjbge2pefiIbfwGg3QClAHYGKriSZIZ11YyHUgk8nwLM8lkxU6WegEg4N5TzGo0wv48qQOLrZAB9+7/wqb/UcZRrRQYnDI7bd+11YIkAGwvenGSHZKQC4DDqeYfiYrc+dZnIU3o7fj5xIHdHe5+1HC/0b8FypF9X9c0Z2xkOtoSFtfhAeIOzcsUWPIdWm4UbYNaVtCOdRLCmG3uAjLj+iwe7IjPB3u/CvsxzPliE7X493B1V/K06OJAo42wMI9WpSUC9DoBMzfVQa9AKQX8ZD1nYRlnMPXsXvwiSIQwY7+t32+jUcbPNDsARGSWT4Wcj08dz/PJZP1SVCa5/f1gGAlYp9S46/pDhgWqsT4X0uQdYdzyFcLDHhmZxm+/z972CmrvzG9l6McvzzsgK0J5VAvKYLLe0XI1wKd/OSQ3/le9vSPAYlR2HTuJBaq28D5pnPF87vMh0zGL2Bd3H4ch2psQCtvdAt2x7HLuWJHIWowUWXBuE/sENVwtJGhubsMzd3l6NFEiRYri/FNdDle6nP7HvDJdD2yNAI6faExLtMLwMErenx6TAftq05QyGUYEqpE0lwn5JQYoJTL4Gong+/SIoS05b5KTagM5Xjs9E6McnDD52G9kKZ2R1ffrmLHslgs5Hp6c3RbjPr0MPQGHuIi67A1xxcLxA5RAwZBgFZf/c/doGZKnJ5VdZKTaVtK0cpTgYW9bKC4ZRf4xqHvvckVyNIIGB3GX4214VKShxfjdkJ46i+xo1g0ftfVUxt/Z0zs1hTrjlwROwpRg0gptUO5TzOoCpJNts1inYDE3H8PPyfnGRCboYe7vQwe9jK8c0iL0WFK+KnlyCkR8L/jOqQWCni4zb8DhwZ9p8GDrVSY080GTrYytPNWVNmGo6ryuW5e/m2MDq295PBykOPvaxV4ZqcWz/awQZhn1cdSDXSZDpk37xhWHyzkBjB/SBi2n05HrkYndhSiBpHh1AaBJizkE2l6DFhbYvz4uV1aAFpM7aDCqpF2uJBjwNq4UuSUCPCwl6FrgAKHpjmi7U3lmpRrQE5J7Sb1iL9uwEt/apFbKiDYVY5X+tjg2R6cWarW7N2BAS+JncLiyQSBV8A3hA3HUvDSptNixyBqEJ83P4rh1z4WOwZZigeWAt1miJ3C4nHkQgN5pEsgOjThZVBkHQ5omoodgSyFbzjQ5QmxU1gFFnIDkctlWDSmHS+XIKuwPdsLgpwTO9A9yBTA6JWAnOfcGwILuQF1CHTFYz2CxI5BVG9FFUqUuXGADt1Dj1mAf4TYKawGC7mBvTCsFXydq58gn8iSpDi0FjsCmTPXpsCAl8VOYVVYyA1MbavEm6Pbih2DqN5i9fW/Hy5ZsZHLARvHe69HNcZCbgTD2vni/jY+YscgqpfdBU3EjkDmqv0jQPPBYqewOizkRrJoTFuobXmZN1mufbmuEGzUYscgc+PgAQx9V+wUVomF3Ej8XOyxYCgHxZDl0gtyFLrx9AvdYugSwNFD7BRWiYXciKb0DEL/MC+xYxDV2SWbVmJHIHMSOgjo8KjYKawWC7kRyWQyLH24A7ycqr8fK5G5O6prJnYEMhf27sCY/4mdwqqxkBuZp9oWHz3cAbw9KFmi7bm334CeJGrMp4Czn9gprBoL2QT6tvTCk725p0GW53SRGnpHX7FjkNg6TwNajRA7hdVjIZvIgqGt0C7AWewYRLWW48KBXZLmGQYM46hqU2Ahm4iNUo5PHo2Agw3nfCXLEq9oKXYEEovCBnjoa0BlL3YSSWAhm1CIl5qzeJHFOVzKOz9J1qA3AL/2YqeQDBayiY3vEoiR7TkwgizH1hw/COCoRMkJHQj0nC12CklhIYtgyf+Fo4kbDwGRZUgvs0G5a4jYMciUHDyBsavAy0NMi4UsAmc7FT5+tCMUvHkyWYh0NU+1SIZcCYxfCzhxPn5TYyGLpHOQO54Z1ELsGEQ1chq885NkDFkMBPcWO4UksZBFNGdAc06tSRZhf1Gg2BHIFNo/CvSYJXYKyWIhi0gul2HlhAiE+TiJHYXornbkeENQ2IgdgxqTXwdg1Mdip5A0FrLInOxU+HpqF3iq+cuOzJdGL0eJW2uxY1BjcfAAHvkeUNmJnUTSWMhmINDdAV9O6QJbJd8OMl8p9ixkqyRXAg+vAVx5WkJsbAAz0ampGz7kTSjIjEXreemTVbp/EdCsr9gpCCxkszK6gz/mDeI0hWSeduUHiB2BGlqHiZz8w4ywkM3MM4NbYGxH3vKOzM/BPFcIti5ix6CGEjoQGP2J2CnoJixkM/T+uPboHOQmdgyiKgRBhny3dmLHoIbg1wEYvw5QqMROQjdhIZshW6UCX07ujEB3Tq9J5iVJxVMqFs81CJj0K2CrFjsJ3YKFbKY81LZYPbUrnOyUYkchMjqibSZ2BKoPe3fgsU2A2lvsJFQNFrIZa+HjhP9N7AQl57wmM7Etl+MbLJbSHpj4E+DZXOwkdAcsZDPXt6UXPny4PdjJZA4uFDtAr2YpWxyZAhj3DRDYTewkdBcsZAvwYEQTfDCuA0uZzEK2M+/8ZHEe+BBoNULsFHQPLGQLMa5zE7z3f+05cQiJ7ryCdymzKEOXAF2ni52CaoCFbEHGdw3EkgfDWcokqkMlQWJHoJq6/21O/GFBWMgWZkK3pnh7TDuWMolmW44vBBl/dZi9wW8CveaKnYJqgT9VFuixHkFYNJrn8UgcWVoVdK48bG3WBr4G9H5W7BRUSyxkCzW5ZzDeHNVG7BgkUWmOvPOT2RrwCtB3vtgpqA5YyBbs8V7N8NpIljKZXpzAa1nNUr8XgX4viJ2C6oiFbOGm926GVx7g3gqZ1t6iJmJHoFv1fQEY8JLYKageWMhWYEbfECwc1krsGCQhkTmeEJR2YscgAIAMGPIOMPAVsYNQPbGQrcSs/qF4dURrjr4mk9Aa5NC48XSJ6OQq4MEvgPvmiJ2EGgAL2Yo82ScEHz8aARsF31ZqfJfteFRGVCpHYMKPQIdHxE5CDYS/ua3M6A7+WPME7xJFje9kRYjYEaTL3h2Y+jvQYrDYSagBsZCt0H2hnvjlqZ7wdeY5Pmo8kfkBYkeQJpdA4IlIoEkXsZNQA2MhW6lWvs7Y9PR9aOnDm5BT4/grzwUGOzexY0iLV6vKMvZqKXYSagQsZCvm72qPX2fdhz4tPMWOQlYq37Wd2BGkI7gPMG0H4MIjE9aKhWzlnO1U+PbxrpjUvanYUcgKXVSFiR1BGro+CUzeDDi4i52EGhELWQKUCjneeTAcr41sw3sqU4M6og0WO4J1k6uAkSuAER8BCg7UtHYyQRAEsUOQ6ey9kIm5G2JRrK0QOwpZgRaOpdit5712G4WDJ/DIOiDoPrGTkIlwD1liBrbywa+zeiLQ3V7sKGQFLmrsUeEcKHYM6+MbDszczzKWGBayBLXydcb2uX0wvJ2v2FHICmQ68VagDarNWOCJXYAr/9CRGhayRDnbqfD5Y53x9pi2sFHy24Dq7pyM90ZuEDI5MPBVYPxawMZB7DQkAv4mlrjJPYOx+eleCPFyFDsKWaiDJRzBX29qX2DKFqDvArGTkIg4qIsAABptBV7dfAa/xaSKHYUsjJuqAtHKaZAJerGjWKaQAcD/fQWovcROQiLjHjIBABxtlVj+SEd8OK49HGwUYschC5JXroTWjTNH1ZpcWXmI+rFNLGMCwEKmWzzcJRC/z+mFVr5OYkchC3LNkbdirBXXoMpZt/ouAOT8NUyV+J1At2nu7YTNs3thImf3ohqKM/DOTzUWPh546jAQ2E3sJGRmWMhULTuVAkseDMenEyPgZMsZguju9hTyEp17snOtPFf80FeAnbPYacgMcVAX3dPV3BK8uvkMDiRkix2FzJRKLiDBcQZk5SViRzFPrUcBD3wEOPmInYTMGAuZauz3uDQs2noOOcVasaOQGTrddBmcsk6IHcO8OHoDD3wItB0rdhKyADxkTTU2uoM//nyuHyZ0C4SMN6mgWyTbthI7gnlp/ygw+yjLmGqMhUy14uKgwrv/1x4//6cnWnirxY5DZuR4RTOxI5gH5wBg4i/A/33B2yVSrfCQNdVZud6ALw4kYeXeRGgrDGLHIZF1cSnCr9r/iB1DRDKg8+PA/Ys4aIvqhIVM9Zaco8Grm08jKvG62FFIZJfc50JekiN2DNML6AIM/wBo0lnsJGTBWMjUYDZFX8Pi7eeRq9GJHYVEcqLZl/BM3y92DNNR+wL3vwW0fwQcWEH1xXPI1GD+r1MT/PlcPzzcuQnk/N0kSQlKiUyhqbAFej8H/Pck0OFRsy1jQRBQUVEhdgyqIRYyNSg3Rxt8+HAH/PFMHwxuzWsupSaqLFjsCI0vbAQw+wgw+A3A1vQDG7VaLebOnQtvb2/Y2dmhd+/eOH78OABg//79kMlk2LFjBzp37gxbW1scPnwYSUlJGDNmDHx8fKBWq9G1a1fs2bOnyvMGBwdjyZIleOKJJ+Dk5ISmTZviyy+/rLLOX3/9hY4dO8LOzg5dunTB5s2bIZPJEBsba1znzJkzGD58ONRqNXx8fDB58mTk5EjwNEYdsJCpUbTydcbXU7tg09P3oWeIh9hxyES25viKHaHxeLUGJm8GJvwAuIs3VegLL7yAjRs3Yu3atYiOjkbz5s0xdOhQ5ObmGtd58cUX8d577+H8+fNo3749iouL8cADD+DPP/9ETEwMhg0bhlGjRiElJaXKc3/00Ufo0qULYmJi8PTTT2PWrFmIj48HABQWFmLUqFEIDw9HdHQ03n77bSxcuLDK4/Pz8zFw4EBERETgxIkT2LlzJzIzMzF+/PjG/8JYAZ5DJpM4dDEbSyPjEXetQOwo1Mgu+rwMVcFlsWM0HPdQoP9LQLuHRL8RhEajgZubG9asWYOJEycCAMrLyxEcHIx58+aha9euGDBgADZv3owxY8bc9bnatWuHp556CnPmzAFQuYfcp08frFu3DkDl4W5fX1+89dZbeOqpp7Bq1Sq8+uqruHbtGuzs7AAAX3/9NWbMmIGYmBh07NgRixcvxqFDhxAZGWnczrVr1xAYGIj4+Hi0bCmRUxp1xD1kMok+LbywZU5vrHqsE69ftnKZTm3FjtAwXIOAMZ8Bc44D7R8WvYwBICkpCeXl5ejVq5dxmUqlQrdu3XD+/Hnjsi5dulR5XHFxMebPn4/WrVvD1dUVarUa58+fv20PuX379sb/l8lk8PX1RVZWFgAgPj4e7du3N5YxAHTrVvUGGXFxcdi3bx/UarXxX6tWrYzZ6e541wAyqWHt/DCkjS82xaRixZ4EXMsrFTsSNbAzaI4mYoeoD+cmQN/5QMRjgEIldpo6cXR0rPLx/PnzsXv3bixduhTNmzeHvb09xo0bB52u6hURKlXV1yuTyWAw1HyOgeLiYowaNQrvv//+bZ/z8/OrxSuQJhYymZxcLsO4zk0wuoM/NhxLwcq9iZwf24oc0ARimNgh6kLtC/R5Hug8FVDaip2mWqGhobCxsUFUVBSCgoIAVB6yPn78OObNm3fHx0VFReHxxx/Hgw8+CKCyOC9fvlyrbYeFhWH9+vXQarWwta38+twYTHZDp06dsHHjRgQHB0OpZL3UlvjHYEiybJRyTL0vGIdeGICXH2gFPxe7ez+IzN62bG8Icgv6ZezWrHJSj2dige4zzbaMgco931mzZmHBggXYuXMnzp07hxkzZqCkpATTp0+/4+NatGiBTZs2ITY2FnFxcZg4cWKt9nwBGB8zc+ZMnD9/HpGRkVi6dCmAyj1pAJg9ezZyc3MxYcIEHD9+HElJSYiMjMS0adOg1+vr/sIlgoVMorO3UWBm31AcemEAPn60I8IDXMSORPVQVKFEmZsF3GgisAcwfh3w32ig+38Alb3YiWrkvffew0MPPYTJkyejU6dOSExMRGRkJNzc3O74mGXLlsHNzQ333XcfRo0ahaFDh6JTp0612q6zszO2bt2K2NhYdOzYEa+88gpef/11ADCeV/b390dUVBT0ej2GDBmC8PBwzJs3D66urpCbwTl4c8dR1mSWjly6jq8PJWPvhUwY+B1qcXa1+A0tr/4idozbyRRAm9FAz/9ymssG8P3332PatGkoKCiAvb1l/EFjzizouBJJSY8QD/QI8UByjgbf/X0Zv568hqIyzjhkKWL0oTCrC1xsnYFOUyr3hF2bip3GYn333XcICQlBQEAA4uLisHDhQowfP55l3EC4h0wWoVSnx+bYVHz39xWcTy8UOw7dw2CPXHytmSN2DMA3HIiYUjm9Je/AVG8ffPABPvvsM2RkZMDPzw9jx47FO++8AwcHB7GjWQUWMlmck1dy8d3fV7DjdAZ0et720RwpZAYkOj0Fma7Y9Bu3cwXCH668bMm/o+m3T1RHLGSyWHkaHf44k46tcWk4lpzLc81mJi7oY7hkHjXR1mRASD8gYjLQaiSg4oh9sjwsZLIKWYVl2H66spxjruaD39Xi+61FJCKurm3cjbg2BTpMADpOAtyCGndbRI2MhUxW51peCbafSsfWU2k4k8rzzWJ5KSgB/8l8s+Gf2D20cqR069FAQO0u3SEyZyxksmrJORpsi0vD1lNpSMgU4XymhHVwLsYW3cyGeTKv1pUl3GYM4GMlc2UT3YKFTJKRkFmErXFp2H0uE/GZRTysbQJJHs9CocmswyNlgF97oPUooM1YwLNFQ0cjMjssZJKkXI0Ofyddx19JOfgr6TqSczRiR7JKx0K+hnfa3pqt7NwECOn/7z+1VyMmIzI/LGQiAOkFpfgr8Tr++qek0wvKxI5kFda1OIg+V1dV/0lbFyC4NxA6oLKAuRdMEsdCJqpGco7GuPd8JOk6rmt0934Q3eapJlfwYs5LlR84eAJNugKBXYHgvpUDsuQKcQMSmREWMtE9CIKA+MwixF3Nx4WMIlxIL0J8ZhFyWdJ35GCjQBs/Z/QJssMzARcrS9g9ROxYRGaNhUxUR1mFZTifUYT4jEJcSC/C+YwiJGUVS272MFcHFVp6O6FdgAvCmzijnb8LQr3UkMtlYkcjsigsZKIGVKE34FKO5p896ULEZxTh8nUN0gvKUKKzzPvB2ijkCHCzR6C7A5q62yPQzQFN3R0qP/ZwgLOdSuyIRFaBhUxkIgUl5UgrKEV6QSnSC8qQnl+GzMIy5BRrcV2jw/ViHXKKtdBWmGYPW6WQQW2rhNpOCbWtCk52Svi52P1btv/818/Zjnu7RCbAQiYyM0Vl5bherENBaTnK9Qbo9AZU6AWU6w3/fCyg4qb/L68woMJgQLlegK7CAIMgwMGmsmidbJU3la4STnZKOP6zzE7FAVVE5oSFTEREZAbkYgcgIiIiFjIREZFZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZkBFjIREZEZYCETERGZARYyERGRGWAhExERmQEWMhERkRlgIRMREZmB/weTRSOXmFYaVAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 600x1200 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (6,12))\n",
    "plt.pie(x = data[target].value_counts(), labels = ['blue','orange','green','red'], autopct = '%.2f')\n",
    "plt.title(\"Distribution of values in alert column\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 415 entries, 0 to 507\n",
      "Data columns (total 6 columns):\n",
      " #   Column     Non-Null Count  Dtype  \n",
      "---  ------     --------------  -----  \n",
      " 0   magnitude  415 non-null    float64\n",
      " 1   depth      415 non-null    float64\n",
      " 2   cdi        415 non-null    int64  \n",
      " 3   mmi        415 non-null    int64  \n",
      " 4   sig        415 non-null    int64  \n",
      " 5   alert      415 non-null    object \n",
      "dtypes: float64(2), int64(3), object(1)\n",
      "memory usage: 22.7+ KB\n"
     ]
    }
   ],
   "source": [
    "data.dropna(inplace=True)\n",
    "data.info()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 415 entries, 0 to 507\n",
      "Data columns (total 6 columns):\n",
      " #   Column     Non-Null Count  Dtype   \n",
      "---  ------     --------------  -----   \n",
      " 0   magnitude  415 non-null    float64 \n",
      " 1   depth      415 non-null    int16   \n",
      " 2   cdi        415 non-null    int8    \n",
      " 3   mmi        415 non-null    int8    \n",
      " 4   sig        415 non-null    int8    \n",
      " 5   alert      415 non-null    category\n",
      "dtypes: category(1), float64(1), int16(1), int8(3)\n",
      "memory usage: 9.1 KB\n"
     ]
    }
   ],
   "source": [
    "data = data.astype({'cdi': 'int8', 'mmi': 'int8', 'sig': 'int8', 'depth': 'int16', 'alert': 'category'})\n",
    "data.info()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AgIKUIXccccdmjVrljIzM5WQkHDRvtHR0SotLdXevXvVqlUrd3teXp5OnDih6Ohod1vdunV14sQJj/efPXtWhw8fvuJayxOMGjVqpNq1a2vfvn2XvZ1//etfiomJ0fvvv+/RZ+LEiZe1z7CwMNWqVUtZWVll1v2yLTY2VpZlqUmTJmrevPlFt3up4963b5+8vLwuuR2gpuMaFKAKefLJJxUQEKBhw4YpLy+vzPrs7Gy9/PLLkqQ+ffpIUplZTV966SVJUlJSkrstNjZWa9as8eg3a9asC46gXI6AgIAyoedCfH191bFjR23atOm828nPzy/Tfm4k4+ejNhs2bFBmZuZl7dPb21uJiYn64IMPdOjQIXd7VlaWFi9e7NH37rvvlre3t9LS0sqMElmW5b6G5mL1nrN582a1bt1awcHBl1UnUFMxggJUIbGxsZo/f77uu+8+tWrVymMm2U8//VTvvfeee96SG264QcnJyZo1a5ZOnDih2267TZ9//rnmzZun/v3761e/+pV7u8OGDdMjjzyiAQMG6Ne//rW2b9+upUuXXtVpiPj4eL3++ut67rnn1LRpU4WFhen222+/YP9+/frpqaeeKnP7bXx8vBYsWKDU1FTddNNNCgwMVN++fXXHHXfo/fff11133aWkpCTt27dPM2fOVFxcnAoKCi6rxkmTJmnZsmXq0qWLRo4cqZKSEv31r39VmzZttG3bNne/2NhYPffccxo/frz279+v/v37KygoSPv27dPChQs1YsQIPf744xetV/rpduqMjAw9+uijV/AdBWoY+24gAnClvv76a2v48OFW48aNLT8/PysoKMjq0qWL9corr1hnzpxx9ysqKrLS0tKsJk2aWL6+vlZUVJQ1fvx4jz6WZVklJSXWuHHjrPr161t16tSxevbsaWVlZV3wNuONGzd6vH/VqlWWJGvVqlXuttzcXCspKckKCgqyJF3yluO8vDzLx8fH+vvf/+7RXlBQYN1///1WSEiIJcl9C29paak1ZcoUKzo62vL397c6dOhgLVq0yEpOTva4zffcbcYvvPDCefe7YsUKq0OHDpafn58VGxtrzZ492xo7dqxVq1atMn3//e9/W7fccosVEBBgBQQEWC1btrRSUlKsPXv2XLJey7KsxYsXW5KsvXv3XvR7AcCyeBYPAGMMHTpUX3/9tdauXWtrHf3799eu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73//q/j4+DJT3L/00ks2VWYmAorhjh49qrCwsDLtp06dYmrkaqJ9+/ZyOBy61GCmw+HgacbVzA8//KB7773X7jJwjezcuVM33nijJLkvij6H3+dlEVAM17FjR3388ccaPXq0pP/7IZ49e7b7IkpUbfv27bO7BNjk3nvv1bJly/TII4/YXQqugVWrVtldQpVCQDHclClT1Lt3b+3evVvFxcV6+eWXtXv3bn366afKyMiwuzxUgPPNJIqaoWnTpnrmmWf02WefqW3btvL19fVY/z//8z82VQbYj4tkq4BvvvlG6enpHreljRs3Tm3btrW7NFSA//znP5fd984776zESnCt/fIRFj/ncDj0zTffXMNqALMQUAxWVFSk3/3ud3rmmWcu+osMVZuX1+U9cYJrUADUJAQUwwUHB2vbtm0EFABAjUJAMVxycrLat2+vMWPG2F0KrrEzZ86oVq1adpeBSnbw4EH95z//0YEDBzweGihx2ylqNi6SNVyzZs00efJkrV+//rz3zXMRXfVSUlKiKVOmaObMmcrLy3PPHPzMM8+ocePGGjp0qN0logKtWLFCd955p2JiYvTVV1+pTZs22r9/vyzLct+OCtRUjKAYjovoapbJkydr3rx5mjx5soYPH66dO3cqJiZGCxYs0IwZM5SZmWl3iahAN998s3r37q20tDQFBQVp+/btCgsL0wMPPKBevXpp5MiRdpcI2IaAAhikadOmeuONN9S9e3f3H6xz/7tOSEjQDz/8YHeJqEBBQUHatm2bYmNjVbduXa1bt06tW7fW9u3b1a9fP+3fv9/uEgHbcIrHcKmpqedtdzgcqlWrlpo2bap+/fopNDT0GleGyvDdd9+padOmZdpLS0tVVFRkQ0WoTAEBAe7rTho2bKjs7Gy1bt1akvT999/bWRpgOwKK4bZu3aotW7aopKRELVq0kPTTFMne3t5q2bKlXnvtNY0dO1br1q1TXFyczdXiasXFxWnt2rVlJm/717/+pQ4dOthUFSpL586dtW7dOrVq1Up9+vTR2LFjtWPHDr3//vvq3Lmz3eUBtiKgGO7c6MicOXPkdDolSfn5+Ro2bJhuueUWDR8+XPfff7/GjBmjpUuX2lwtrtaECROUnJys7777TqWlpXr//fe1Z88evf3221q0aJHd5aGCvfTSSyooKJAkpaWlqaCgQAsWLFCzZs24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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data[target].value_counts().plot(kind='bar', title='Count (target)', color=['green', 'yellow', 'orange', 'red']);\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: title={'center': 'Count (target)'}, xlabel='alert'>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAHqCAYAAAAuxbWnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3DElEQVR4nO3deXQUVd7/8U9nBZJ0QoBsGgIJa1gEg0J+iDKSYRVB0RFwBDXAiIFnJKgMo7KphMEFHEdFxAGcMSOPM4IjyhJZwmJEdlkUIYKAkIAgCQEJWer3h4d+bMMWSKjbyft1Tp2TvnW7+lspoD9U3brlsCzLEgAAgEG87C4AAADg1wgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAjHHgwAHVqFFDa9eutbuUCrdz5075+Pho+/btdpcCeAQCCuCBsrOz9Yc//EGxsbGqUaOGnE6nOnbsqFdeeUU//fST3eVJkl5//XXNmTOnXO+ZNGmS2rdvr44dO7ra0tPTNX369IotrhJdqN74+Hj16tVL48aNu/ZFAR7IwbN4AM/y8ccf695775W/v78GDRqkli1b6uzZs1qzZo3+85//6MEHH9TMmTPtLlMtW7ZU3bp1tXLlysvqf/ToUV133XWaO3euBgwY4Gq/4447tH37du3bt69yCq1gF6t30aJF6tmzp/bs2aO4uLhrXxzgQXzsLgDA5du7d6/69++vmJgYLV++XJGRka51KSkp2rNnjz7++GMbK7xy//znP+Xj46PevXtX+mcVFxertLRUfn5+lf5Zv5SUlKTatWtr7ty5mjRp0jX9bMDTcIkH8CBTp05VQUGB3n77bbdwck6jRo30xz/+0fW6uLhYzz77rOLi4uTv768GDRroz3/+swoLC93e53A4NGHChDLba9CggR588EHX6zlz5sjhcGjt2rVKTU1VvXr1FBAQoLvuuktHjx51e9+OHTuUmZkph8Mhh8Ohzp07X3TfFixYoPbt2yswMNDV1rlzZ3388cf67rvvXNtp0KCBJOns2bMaN26cEhISFBwcrICAAHXq1EkrVqxw2+6+ffvkcDj04osvavr06a7fxc6dOyVJK1euVLt27VSjRg3FxcXpzTff1IQJE+RwOMrU+M9//lMJCQmqWbOmQkND1b9/fx04cOCy6pUkX19fde7cWR9++OFFfxcAOIMCeJSPPvpIsbGx+n//7/9dVv8hQ4Zo7ty5uueeezR69GitW7dOaWlp+uqrrzR//vwrrmPkyJGqXbu2xo8fr3379mn69OkaMWKE5s2bJ0maPn26Ro4cqcDAQD311FOSpPDw8Atur6ioSOvXr9fw4cPd2p966inl5eXp4MGDmjZtmiS5Akx+fr5mzZqlAQMGaOjQoTp58qTefvttdevWTV988YXatGnjtq3Zs2frzJkzGjZsmPz9/RUaGqrNmzere/fuioyM1MSJE1VSUqJJkyapXr16ZWp8/vnn9cwzz+h3v/udhgwZoqNHj+rVV1/Vrbfeqs2bNyskJOSi9Z6TkJCgDz/8UPn5+XI6neX4rQPVjAXAI+Tl5VmSrD59+lxW/y1btliSrCFDhri1P/7445Yka/ny5a42Sdb48ePLbCMmJsYaPHiw6/Xs2bMtSVZSUpJVWlrqah81apTl7e1tnThxwtXWokUL67bbbrusWvfs2WNJsl599dUy63r16mXFxMSUaS8uLrYKCwvd2n788UcrPDzcevjhh11te/futSRZTqfTOnLkiFv/3r17W7Vq1bK+//57V9vu3bstHx8f65f/PO7bt8/y9va2nn/+ebf3b9u2zfLx8XFrv1C956Snp1uSrHXr1l2wDwDL4hIP4CHy8/MlSUFBQZfV/5NPPpEkpaamurWPHj1akq5qrMqwYcPcLoF06tRJJSUl+u67765oe8eOHZMk1a5d+7Lf4+3t7RpDUlpaquPHj6u4uFjt2rXTpk2byvTv16+f25mRkpISffrpp+rbt6+ioqJc7Y0aNVKPHj3c3vvBBx+otLRUv/vd7/TDDz+4loiICDVu3LjMZaWLObePP/zww2W/B6iOuMQDeIhzlwNOnjx5Wf2/++47eXl5qVGjRm7tERERCgkJueIwIUn169d3e33uS/fHH3+84m1KklXOmwrnzp2rl156SV9//bWKiopc7Q0bNizT99dtR44c0U8//VTm9yOpTNvu3btlWZYaN2583jp8fX0vu+Zz+3i+MS4A/g8BBfAQTqdTUVFR5Z7o62q+CEtKSs7b7u3tfd728gaMc+rUqSOpfAHnn//8px588EH17dtXTzzxhMLCwuTt7a20tDRlZ2eX6V+zZs0rqk36+QyNw+HQokWLzrvvvx5ncjHn9rFu3bpXXA9QHRBQAA9yxx13aObMmcrKylJiYuJF+8bExKi0tFS7d+9W8+bNXe25ubk6ceKEYmJiXG21a9fWiRMn3N5/9uxZHT58+IprLU8wql+/vmrWrKm9e/de9nb+/e9/KzY2Vh988IFbn/Hjx1/WZ4aFhalGjRras2dPmXW/bouLi5NlWWrYsKGaNGly0e1ear/37t0rLy+vS24HqO4YgwJ4kCeffFIBAQEaMmSIcnNzy6zPzs7WK6+8Iknq2bOnJJWZ1fTll1+WJPXq1cvVFhcXp1WrVrn1mzlz5gXPoFyOgICAMqHnQnx9fdWuXTtt2LDhvNvJy8sr037uTMYvz9qsW7dOWVlZl/WZ3t7eSkpK0oIFC3To0CFX+549e7Ro0SK3vnfffbe8vb01ceLEMmeJLMtyjaG5WL3nbNy4US1atFBwcPBl1QlUV5xBATxIXFyc0tPTdd9996l58+ZuM8l+9tlnev/9913zltxwww0aPHiwZs6cqRMnTui2227TF198oblz56pv3776zW9+49rukCFD9Mgjj6hfv3767W9/q61bt2rJkiVXdRkiISFBb7zxhp577jk1atRIYWFhuv322y/Yv0+fPnrqqafK3H6bkJCgefPmKTU1VTfddJMCAwPVu3dv3XHHHfrggw901113qVevXtq7d69mzJih+Ph4FRQUXFaNEyZM0NKlS9WxY0cNHz5cJSUl+tvf/qaWLVtqy5Ytrn5xcXF67rnnNHbsWO3bt099+/ZVUFCQ9u7dq/nz52vYsGF6/PHHL1qv9PPt1JmZmXr00Uev4DcKVDP23UAE4Ep988031tChQ60GDRpYfn5+VlBQkNWxY0fr1Vdftc6cOePqV1RUZE2cONFq2LCh5evra0VHR1tjx45162NZllVSUmKNGTPGqlu3rlWrVi2rW7du1p49ey54m/H69evd3r9ixQpLkrVixQpXW05OjtWrVy8rKCjIknTJW45zc3MtHx8f6x//+Idbe0FBgTVw4EArJCTEkuS6hbe0tNSaPHmyFRMTY/n7+1tt27a1Fi5caA0ePNjtNt9ztxm/8MIL5/3cZcuWWW3btrX8/PysuLg4a9asWdbo0aOtGjVqlOn7n//8x7rlllusgIAAKyAgwGrWrJmVkpJi7dq165L1WpZlLVq0yJJk7d69+6K/CwCWxbN4ABgjOTlZ33zzjVavXm1rHX379tWOHTu0e/fuCt+uw+G4qknygOqCMSgAjDF+/HitX79ea9euvWaf+eunP+/evVuffPLJJafmL6+vvvpKCxcu1LPPPluh2wWqKs6gAKjWIiMj9eCDDyo2Nlbfffed3njjDRUWFmrz5s0XnPcEQOVjkCyAaq179+7617/+pZycHPn7+ysxMVGTJ08mnAA24wwKAAAwDmNQAACAcQgoAADAOB45BqW0tFSHDh1SUFAQD9wCAMBDWJalkydPKioqSl5eFz9H4pEB5dChQ4qOjra7DAAAcAUOHDig66+//qJ9PDKgBAUFSfp5B385JTYAADBXfn6+oqOjXd/jF+ORAeXcZR2n00lAAQDAw1zO8AwGyQIAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACM42N3AZ7IMdFhdwm2sMZbdpdgj/Tqebw1sJoeb0c1Pd5WNT3eqqbHW+Yfb86gAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGKdcAeWNN95Q69at5XQ65XQ6lZiYqEWLFrnWnzlzRikpKapTp44CAwPVr18/5ebmum1j//796tWrl2rVqqWwsDA98cQTKi4urpi9AQAAVUK5Asr111+vKVOmaOPGjdqwYYNuv/129enTRzt27JAkjRo1Sh999JHef/99ZWZm6tChQ7r77rtd7y8pKVGvXr109uxZffbZZ5o7d67mzJmjcePGVexeAQAAj+awLMu6mg2EhobqhRde0D333KN69eopPT1d99xzjyTp66+/VvPmzZWVlaUOHTpo0aJFuuOOO3To0CGFh4dLkmbMmKExY8bo6NGj8vPzu6zPzM/PV3BwsPLy8uR0Oq+m/CvimOi45p9pAmv8Vf1R8Vzp1fN4a2A1Pd6Oanq8r+6rwINV0+Mte453eb6/r3gMSklJid577z2dOnVKiYmJ2rhxo4qKipSUlOTq06xZM9WvX19ZWVmSpKysLLVq1coVTiSpW7duys/Pd52FOZ/CwkLl5+e7LQAAoOoqd0DZtm2bAgMD5e/vr0ceeUTz589XfHy8cnJy5Ofnp5CQELf+4eHhysnJkSTl5OS4hZNz68+tu5C0tDQFBwe7lujo6PKWDQAAPEi5A0rTpk21ZcsWrVu3TsOHD9fgwYO1c+fOyqjNZezYscrLy3MtBw4cqNTPAwAA9vIp7xv8/PzUqFEjSVJCQoLWr1+vV155Rffdd5/Onj2rEydOuJ1Fyc3NVUREhCQpIiJCX3zxhdv2zt3lc67P+fj7+8vf37+8pQIAAA911fOglJaWqrCwUAkJCfL19dWyZctc63bt2qX9+/crMTFRkpSYmKht27bpyJEjrj4ZGRlyOp2Kj4+/2lIAAEAVUa4zKGPHjlWPHj1Uv359nTx5Uunp6Vq5cqWWLFmi4OBgJScnKzU1VaGhoXI6nRo5cqQSExPVoUMHSVLXrl0VHx+vBx54QFOnTlVOTo6efvpppaSkcIYEAAC4lCugHDlyRIMGDdLhw4cVHBys1q1ba8mSJfrtb38rSZo2bZq8vLzUr18/FRYWqlu3bnr99ddd7/f29tbChQs1fPhwJSYmKiAgQIMHD9akSZMqdq8AAIBHu+p5UOzAPCj2YB6UaoZ5UKoXz/sqqCDV9HhX5XlQAAAAKgsBBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxTroCSlpamm266SUFBQQoLC1Pfvn21a9cutz6dO3eWw+FwWx555BG3Pvv371evXr1Uq1YthYWF6YknnlBxcfHV7w0AAKgSfMrTOTMzUykpKbrppptUXFysP//5z+ratat27typgIAAV7+hQ4dq0qRJrte1atVy/VxSUqJevXopIiJCn332mQ4fPqxBgwbJ19dXkydProBdAgAAnq5cAWXx4sVur+fMmaOwsDBt3LhRt956q6u9Vq1aioiIOO82li5dqp07d+rTTz9VeHi42rRpo2effVZjxozRhAkT5OfndwW7AQAAqpKrGoOSl5cnSQoNDXVrf/fdd1W3bl21bNlSY8eO1enTp13rsrKy1KpVK4WHh7vaunXrpvz8fO3YseO8n1NYWKj8/Hy3BQAAVF3lOoPyS6WlpXrsscfUsWNHtWzZ0tU+cOBAxcTEKCoqSl9++aXGjBmjXbt26YMPPpAk5eTkuIUTSa7XOTk55/2stLQ0TZw48UpLBQAAHuaKA0pKSoq2b9+uNWvWuLUPGzbM9XOrVq0UGRmpLl26KDs7W3FxcVf0WWPHjlVqaqrrdX5+vqKjo6+scAAAYLwrusQzYsQILVy4UCtWrND1119/0b7t27eXJO3Zs0eSFBERodzcXLc+515faNyKv7+/nE6n2wIAAKqucgUUy7I0YsQIzZ8/X8uXL1fDhg0v+Z4tW7ZIkiIjIyVJiYmJ2rZtm44cOeLqk5GRIafTqfj4+PKUAwAAqqhyXeJJSUlRenq6PvzwQwUFBbnGjAQHB6tmzZrKzs5Wenq6evbsqTp16ujLL7/UqFGjdOutt6p169aSpK5duyo+Pl4PPPCApk6dqpycHD399NNKSUmRv79/xe8hAADwOOU6g/LGG28oLy9PnTt3VmRkpGuZN2+eJMnPz0+ffvqpunbtqmbNmmn06NHq16+fPvroI9c2vL29tXDhQnl7eysxMVG///3vNWjQILd5UwAAQPVWrjMolmVddH10dLQyMzMvuZ2YmBh98skn5floAABQjfAsHgAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABinXAElLS1NN910k4KCghQWFqa+fftq165dbn3OnDmjlJQU1alTR4GBgerXr59yc3Pd+uzfv1+9evVSrVq1FBYWpieeeELFxcVXvzcAAKBKKFdAyczMVEpKij7//HNlZGSoqKhIXbt21alTp1x9Ro0apY8++kjvv/++MjMzdejQId19992u9SUlJerVq5fOnj2rzz77THPnztWcOXM0bty4itsrAADg0RyWZVlX+uajR48qLCxMmZmZuvXWW5WXl6d69eopPT1d99xzjyTp66+/VvPmzZWVlaUOHTpo0aJFuuOOO3To0CGFh4dLkmbMmKExY8bo6NGj8vPzu+Tn5ufnKzg4WHl5eXI6nVda/hVzTHRc8880gTX+iv+oeLb06nm8NbCaHm9HNT3eV/5V4OGq6fGWPce7PN/fVzUGJS8vT5IUGhoqSdq4caOKioqUlJTk6tOsWTPVr19fWVlZkqSsrCy1atXKFU4kqVu3bsrPz9eOHTvO+zmFhYXKz893WwAAQNV1xQGltLRUjz32mDp27KiWLVtKknJycuTn56eQkBC3vuHh4crJyXH1+WU4Obf+3LrzSUtLU3BwsGuJjo6+0rIBAIAHuOKAkpKSou3bt+u9996ryHrOa+zYscrLy3MtBw4cqPTPBAAA9vG5kjeNGDFCCxcu1KpVq3T99de72iMiInT27FmdOHHC7SxKbm6uIiIiXH2++OILt+2du8vnXJ9f8/f3l7+//5WUCgAAPFC5zqBYlqURI0Zo/vz5Wr58uRo2bOi2PiEhQb6+vlq2bJmrbdeuXdq/f78SExMlSYmJidq2bZuOHDni6pORkSGn06n4+Pir2RcAAFBFlOsMSkpKitLT0/Xhhx8qKCjINWYkODhYNWvWVHBwsJKTk5WamqrQ0FA5nU6NHDlSiYmJ6tChgySpa9euio+P1wMPPKCpU6cqJydHTz/9tFJSUjhLAgAAJJUzoLzxxhuSpM6dO7u1z549Ww8++KAkadq0afLy8lK/fv1UWFiobt266fXXX3f19fb21sKFCzV8+HAlJiYqICBAgwcP1qRJk65uTwAAQJVxVfOg2IV5UOzBPCjVDPOgVC+e91VQQarp8a7q86AAAABUBgIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGKfcAWXVqlXq3bu3oqKi5HA4tGDBArf1Dz74oBwOh9vSvXt3tz7Hjx/X/fffL6fTqZCQECUnJ6ugoOCqdgQAAFQd5Q4op06d0g033KDXXnvtgn26d++uw4cPu5Z//etfbuvvv/9+7dixQxkZGVq4cKFWrVqlYcOGlb96AABQJfmU9w09evRQjx49LtrH399fERER51331VdfafHixVq/fr3atWsnSXr11VfVs2dPvfjii4qKiipvSQAAoIqplDEoK1euVFhYmJo2barhw4fr2LFjrnVZWVkKCQlxhRNJSkpKkpeXl9atW3fe7RUWFio/P99tAQAAVVeFB5Tu3bvrnXfe0bJly/SXv/xFmZmZ6tGjh0pKSiRJOTk5CgsLc3uPj4+PQkNDlZOTc95tpqWlKTg42LVER0dXdNkAAMAg5b7Ecyn9+/d3/dyqVSu1bt1acXFxWrlypbp06XJF2xw7dqxSU1Ndr/Pz8wkpAABUYZV+m3FsbKzq1q2rPXv2SJIiIiJ05MgRtz7FxcU6fvz4Bcet+Pv7y+l0ui0AAKDqqvSAcvDgQR07dkyRkZGSpMTERJ04cUIbN2509Vm+fLlKS0vVvn37yi4HAAB4gHJf4ikoKHCdDZGkvXv3asuWLQoNDVVoaKgmTpyofv36KSIiQtnZ2XryySfVqFEjdevWTZLUvHlzde/eXUOHDtWMGTNUVFSkESNGqH///tzBAwAAJF3BGZQNGzaobdu2atu2rSQpNTVVbdu21bhx4+Tt7a0vv/xSd955p5o0aaLk5GQlJCRo9erV8vf3d23j3XffVbNmzdSlSxf17NlTt9xyi2bOnFlxewUAADxauc+gdO7cWZZlXXD9kiVLLrmN0NBQpaenl/ejAQBANcGzeAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGCccgeUVatWqXfv3oqKipLD4dCCBQvc1luWpXHjxikyMlI1a9ZUUlKSdu/e7dbn+PHjuv/+++V0OhUSEqLk5GQVFBRc1Y4AAICqo9wB5dSpU7rhhhv02muvnXf91KlT9de//lUzZszQunXrFBAQoG7duunMmTOuPvfff7927NihjIwMLVy4UKtWrdKwYcOufC8AAECV4lPeN/To0UM9evQ47zrLsjR9+nQ9/fTT6tOnjyTpnXfeUXh4uBYsWKD+/fvrq6++0uLFi7V+/Xq1a9dOkvTqq6+qZ8+eevHFFxUVFXUVuwMAAKqCCh2DsnfvXuXk5CgpKcnVFhwcrPbt2ysrK0uSlJWVpZCQEFc4kaSkpCR5eXlp3bp1591uYWGh8vPz3RYAAFB1VWhAycnJkSSFh4e7tYeHh7vW5eTkKCwszG29j4+PQkNDXX1+LS0tTcHBwa4lOjq6IssGAACG8Yi7eMaOHau8vDzXcuDAAbtLAgAAlahCA0pERIQkKTc31609NzfXtS4iIkJHjhxxW19cXKzjx4+7+vyav7+/nE6n2wIAAKquCg0oDRs2VEREhJYtW+Zqy8/P17p165SYmChJSkxM1IkTJ7Rx40ZXn+XLl6u0tFTt27evyHIAAICHKvddPAUFBdqzZ4/r9d69e7VlyxaFhoaqfv36euyxx/Tcc8+pcePGatiwoZ555hlFRUWpb9++kqTmzZure/fuGjp0qGbMmKGioiKNGDFC/fv35w4eAAAg6QoCyoYNG/Sb3/zG9To1NVWSNHjwYM2ZM0dPPvmkTp06pWHDhunEiRO65ZZbtHjxYtWoUcP1nnfffVcjRoxQly5d5OXlpX79+umvf/1rBewOAACoChyWZVl2F1Fe+fn5Cg4OVl5eni3jURwTHdf8M01gjfe4PyoVI716Hm8NrKbH21FNj7fnfRVUkGp6vGXP8S7P97dH3MUDAACqFwIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGKfCA8qECRPkcDjclmbNmrnWnzlzRikpKapTp44CAwPVr18/5ebmVnQZAADAg1XKGZQWLVro8OHDrmXNmjWudaNGjdJHH32k999/X5mZmTp06JDuvvvuyigDAAB4KJ9K2aiPjyIiIsq05+Xl6e2331Z6erpuv/12SdLs2bPVvHlzff755+rQoUNllAMAADxMpZxB2b17t6KiohQbG6v7779f+/fvlyRt3LhRRUVFSkpKcvVt1qyZ6tevr6ysrMooBQAAeKAKP4PSvn17zZkzR02bNtXhw4c1ceJEderUSdu3b1dOTo78/PwUEhLi9p7w8HDl5ORccJuFhYUqLCx0vc7Pz6/osgEAgEEqPKD06NHD9XPr1q3Vvn17xcTE6H//939Vs2bNK9pmWlqaJk6cWFElAgAAw1X6bcYhISFq0qSJ9uzZo4iICJ09e1YnTpxw65Obm3veMSvnjB07Vnl5ea7lwIEDlVw1AACwU6UHlIKCAmVnZysyMlIJCQny9fXVsmXLXOt37dql/fv3KzEx8YLb8Pf3l9PpdFsAAEDVVeGXeB5//HH17t1bMTExOnTokMaPHy9vb28NGDBAwcHBSk5OVmpqqkJDQ+V0OjVy5EglJiZyBw8AAHCp8IBy8OBBDRgwQMeOHVO9evV0yy236PPPP1e9evUkSdOmTZOXl5f69eunwsJCdevWTa+//npFlwEAADyYw7Isy+4iyis/P1/BwcHKy8uz5XKPY6Ljmn+mCazxHvdHpWKkV8/jrYHV9Hg7qunx9ryvggpSTY+37Dne5fn+5lk8AADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADGIaAAAADjEFAAAIBxCCgAAMA4BBQAAGAcAgoAADAOAQUAABiHgAIAAIxDQAEAAMYhoAAAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMI6tAeW1115TgwYNVKNGDbVv315ffPGFneUAAABD2BZQ5s2bp9TUVI0fP16bNm3SDTfcoG7duunIkSN2lQQAAAxhW0B5+eWXNXToUD300EOKj4/XjBkzVKtWLf3973+3qyQAAGAIWwLK2bNntXHjRiUlJf1fIV5eSkpKUlZWlh0lAQAAg/jY8aE//PCDSkpKFB4e7tYeHh6ur7/+ukz/wsJCFRYWul7n5eVJkvLz8yu30As5Y8/H2s2237fdTttdgE2q6/Gurjje1Yw9x/vc94hlWZfsa0tAKa+0tDRNnDixTHt0dLQN1VRfwVOC7S4B19JQjne1Eszxrl7sPd4nT55U8CX+zNkSUOrWrStvb2/l5ua6tefm5ioiIqJM/7Fjxyo1NdX1urS0VMePH1edOnXkcDgqvV5T5OfnKzo6WgcOHJDT6bS7HFQyjnf1wvGuXqrr8bYsSydPnlRUVNQl+9oSUPz8/JSQkKBly5apb9++kn4OHcuWLdOIESPK9Pf395e/v79bW0hIyDWo1ExOp7Na/YGu7jje1QvHu3qpjsf7UmdOzrHtEk9qaqoGDx6sdu3a6eabb9b06dN16tQpPfTQQ3aVBAAADGFbQLnvvvt09OhRjRs3Tjk5OWrTpo0WL15cZuAsAACofmwdJDtixIjzXtLB+fn7+2v8+PFlLnehauJ4Vy8c7+qF431pDuty7vUBAAC4hnhYIAAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAAPt2bNHS5Ys0U8//STp8h6sBcBsgwYN0uzZs5WdnW13KR6BgGK43NxcPfDAA4qKipKPj4+8vb3dFlQtx44dU1JSkpo0aaKePXvq8OHDkqTk5GSNHj3a5uoAXA0/Pz+lpaWpcePGio6O1u9//3vNmjVLu3fvtrs0IzEPiuF69Oih/fv3a8SIEYqMjCzzcMQ+ffrYVBkqw6BBg3TkyBHNmjVLzZs319atWxUbG6slS5YoNTVVO3bssLtEXKVfPvj0Ul5++eVKrAR2+f7777Vq1SplZmYqMzNT33zzjSIjI3Xw4EG7SzOKrTPJ4tLWrFmj1atXq02bNnaXgmtg6dKlWrJkia6//nq39saNG+u7776zqSpUpM2bN7u93rRpk4qLi9W0aVNJ0jfffCNvb28lJCTYUR6ugdq1a6tOnTqqXbu2QkJC5OPjo3r16tldlnEIKIaLjo5m/EE1curUKdWqVatM+/Hjx5kSu4pYsWKF6+eXX35ZQUFBmjt3rmrXri1J+vHHH/XQQw+pU6dOdpWISvLnP/9ZK1eu1ObNm9W8eXPddttt+tOf/qRbb73Vdfzxf7jEY7ilS5fqpZde0ptvvqkGDRrYXQ4qWc+ePZWQkKBnn31WQUFB+vLLLxUTE6P+/furtLRU//73v+0uERXouuuu09KlS9WiRQu39u3bt6tr1646dOiQTZWhMnh5ealevXoaNWqU7r77bjVp0sTukozGGRTD3XfffTp9+rTi4uJUq1Yt+fr6uq0/fvy4TZWhMkydOlVdunTRhg0bdPbsWT355JPasWOHjh8/rrVr19pdHipYfn6+jh49Wqb96NGjOnnypA0VoTJt3rxZmZmZWrlypV566SX5+fnptttuU+fOndW5c2cCy69wBsVwc+fOvej6wYMHX6NKcK3k5eXpb3/7m7Zu3aqCggLdeOONSklJUWRkpN2loYINGjRIq1ev1ksvvaSbb75ZkrRu3To98cQT6tSp0yX//sOzbd26VdOmTdO7776r0tJSlZSU2F2SUQgoAGCT06dP6/HHH9ff//53FRUVSZJ8fHyUnJysF154QQEBATZXiIpkWZY2b96slStXauXKlVqzZo3y8/PVunVr3XbbbZo2bZrdJRqFgOIBsrOzXZP7vPLKKwoLC9OiRYtUv379Mteu4dm+/PLL87Y7HA7VqFFD9evXZ7BsFXTq1CnX5F1xcXEEkyqqdu3aKigo0A033OC6tNOpUyeFhITYXZqRCCiGy8zMVI8ePdSxY0etWrVKX331lWJjYzVlyhRt2LCBQZNVjJeXl2uum3N/NX85942vr6/uu+8+vfnmm6pRo4YtNaLi7dmzR9nZ2br11ltVs2ZNWZZVZs4jeL6PP/5YnTp1ktPptLsUj8BMsob705/+pOeee04ZGRny8/Nztd9+++36/PPPbawMlWH+/Plq3LixZs6cqa1bt2rr1q2aOXOmmjZtqvT0dL399ttavny5nn76abtLRQU4duyYunTpwszB1USvXr1c4eTgwYNMzHYpFowWEBBgffvtt5ZlWVZgYKCVnZ1tWZZl7d271/L397ezNFSCm266yVq8eHGZ9sWLF1s33XSTZVmWNX/+fCs2NvZal4ZK8MADD1jdunWzDhw44Pb3e/HixVZ8fLzN1aGilZSUWBMnTrScTqfl5eVleXl5WcHBwdakSZOskpISu8szDrcZGy4kJESHDx9Ww4YN3do3b96s6667zqaqUFm2bdummJiYMu0xMTHatm2bJKlNmzau/2nDszFzcPXy1FNP6e2339aUKVPUsWNHST/PFj5hwgSdOXNGzz//vM0VmoVLPIbr37+/xowZo5ycHDkcDpWWlmrt2rV6/PHHNWjQILvLQwVr1qyZpkyZorNnz7raioqKNGXKFDVr1kzSz8/xCA8Pt6tEVCBmDq5e5s6dq1mzZmn48OFq3bq1WrdurUcffVRvvfWW5syZY3d5xuEMiuEmT56slJQURUdHq6SkRPHx8SopKdHAgQMZh1AFvfbaa7rzzjt1/fXXq3Xr1pJ+PqtSUlKihQsXSpK+/fZbPfroo3aWiQrSqVMnvfPOO3r22WclyfWfkKlTp+o3v/mNzdWhoh0/ftz1H41fatasGZNungd38XiI/fv3a/v27SooKFDbtm3VuHFju0tCJTl58qTeffddffPNN5Kkpk2bauDAgQoKCrK5MlS0HTt26Pbbb9eNN96o5cuX684773SbOTguLs7uElGB2rdvr/bt2+uvf/2rW/vIkSO1fv16bnz4FQKKhzh79qz27t2ruLg4+fhw4gvwdEVFRerevbvS0tKUkZHBzMHVQGZmpnr16qX69esrMTFRkpSVlaUDBw7ok08+4QGRv0JAMdzp06c1cuRI15TX33zzjWJjYzVy5Ehdd911+tOf/mRzhahou3fv1ooVK3TkyBGVlpa6rRs3bpxNVaEy1KtXT5999hlnRKuRQ4cO6bXXXtPXX38tSWrevLkeffRRRUVF2VyZeQgohvvjH/+otWvXavr06erevbu+/PJLxcbG6sMPP9SECRO0efNmu0tEBXrrrbc0fPhw1a1bVxEREW6TdTkcDm3atMnG6lDRRo0aJX9/f02ZMsXuUgDjcK3AcAsWLNC8efPUoUMHty+rFi1auKbGRtXx3HPP6fnnn9eYMWPsLgXXQHFxsf7+97/r008/VUJCQpkp7l9++WWbKkNFudDjK87n3MB4/IyAYrijR48qLCysTPupU6eYCrsK+vHHH3XvvffaXQauke3bt+vGG2+UJNeg6HP4+101tGnTRg6HQ5e6WOFwOHia8a8QUAzXrl07ffzxxxo5cqSk//tHa9asWa5BVqg67r33Xi1dulSPPPKI3aXgGlixYoXdJaCS7d271+4SPBYBxXCTJ09Wjx49tHPnThUXF+uVV17Rzp079dlnnykzM9Pu8lDBGjVqpGeeeUaff/65WrVqJV9fX7f1//M//2NTZQCuxPlmhsblYZCsB/j222+VlpbmdhvimDFj1KpVK7tLQwX79SMNfsnhcOjbb7+9htUAuFr//e9/L7vvnXfeWYmVeB4CisGKior0hz/8Qc8888xFv7gAAGby8rq8J8owBqUsAorhgoODtWXLFgIKAKBaIaAYbvDgwWrTpo1GjRpldym4Rg4ePKj//ve/2r9/v9tDAyVuOwWqijNnzqhGjRp2l2E0BskarnHjxpo0aZLWrl173nkSGDRZtSxbtkx33nmnYmNj9fXXX6tly5bat2+fLMty3Y4KwDOVlJRo8uTJmjFjhnJzc10zgz/zzDNq0KCBkpOT7S7RKJxBMRyDJquXm2++WT169NDEiRMVFBSkrVu3KiwsTPfff7+6d++u4cOH210igCs0adIkzZ07V5MmTdLQoUO1fft2xcbGat68eZo+fbqysrLsLtEoBBTAIEFBQdqyZYvi4uJUu3ZtrVmzRi1atNDWrVvVp08f7du3z+4SAVyhRo0a6c0331SXLl1c/wE5d7Y0MTFRP/74o90lGoVLPIZLTU09b7vD4VCNGjXUqFEj9enTR6Ghode4MlSGgIAA17iTyMhIZWdnq0WLFpKkH374wc7SAFyl77//Xo0aNSrTXlpaqqKiIhsqMhsBxXCbN2/Wpk2bVFJSoqZNm0r6eUpsb29vNWvWTK+//rpGjx6tNWvWKD4+3uZqcbU6dOigNWvWqHnz5urZs6dGjx6tbdu26YMPPlCHDh3sLg/AVYiPj9fq1avLTN7273//W23btrWpKnMRUAx37uzI7Nmz5XQ6JUl5eXkaMmSIbrnlFg0dOlQDBw7UqFGjtGTJEpurxdV6+eWXVVBQIEmaOHGiCgoKNG/ePDVu3Jg7eAAPN27cOA0ePFjff/+9SktL9cEHH2jXrl165513tHDhQrvLMw5jUAx33XXXKSMjo8zZkR07dqhr1676/vvvtWnTJnXt2pVLAB6upKREa9euVevWrRUSEmJ3OQAqwerVqzVp0iS3mcHHjRunrl272l2acS5vijvYJi8vT0eOHCnTfvToUeXn50uSQkJCysyXAc/j7e2trl27MlAOqKIGDx4sy7KUkZGhI0eO6PTp01qzZg3h5AIIKIbr06ePHn74Yc2fP18HDx7UwYMHNX/+fCUnJ6tv376SpC+++EJNmjSxt1BUiJYtW3LrOFBF5eXlKSkpSY0bN9bkyZN16NAhu0syGpd4DFdQUKBRo0bpnXfeUXFxsSTJx8dHgwcP1rRp0xQQEKAtW7ZIktq0aWNfoagQixcv1tixY/Xss8+ed2K+c+OQAHimo0eP6h//+Ifmzp2rnTt3KikpSQ8//LD69u1b5unl1R0BxUMUFBS4/mcdGxurwMBAmytCZfjlg8UcDofrZ8uyeJgYUMVs2rRJs2fP1qxZsxQYGKjf//73evTRR9W4cWO7SzMCd/F4iMDAQLVu3druMlDJVqxYYXcJAK6Bw4cPKyMjQxkZGfL29lbPnj21bds2xcfHa+rUqTx/TZxBAYxz4sQJvf322/rqq68k/Tx3QnJysoKDg22uDMDVKCoq0n//+1/Nnj1bS5cuVevWrTVkyBANHDjQdfl2/vz5evjhhxksLwIKYJQNGzaoe/fuqlGjhm6++WZJ0vr16/XTTz9p6dKlPDAQ8GB169ZVaWmpBgwYoKFDh5533OCJEyfUtm1b7d2799oXaBgCCmCQTp06qVGjRnrrrbfk4/PzFdji4mINGTJE3377rVatWmVzhQCu1D/+8Q/de++9qlGjht2leAQCCmCQmjVravPmzWrWrJlb+86dO9WuXTudPn3apsoA4NpiHhTAIE6nU/v37y/TfuDAAQUFBdlQEQDYg4ACGOS+++5TcnKy5s2bpwMHDujAgQN67733NGTIEA0YMMDu8gDgmuE2Y8AgL774ohwOhwYNGuSamM/X11fDhw/XlClTbK4OAK4dxqAABjp9+rSys7MlSXFxcapVq5bNFQHAtUVAAQAAxmEMCgAAMA4BBQAAGIeAAgAAjENAAWCLffv2yeFwaMuWLXaXAsBABBQAHs/hcGjBggV2lwGgAhFQAHiss2fP2l0CgEpCQAFQaRYvXqxbbrlFISEhqlOnju644w7X/C7ns337dvXo0UOBgYEKDw/XAw88oB9++MG1vnPnzhoxYoQee+wx1a1bV926dVODBg0kSXfddZccDofrNQDPRkABUGlOnTql1NRUbdiwQcuWLZOXl5fuuusulZaWlul74sQJ3X777Wrbtq02bNigxYsXKzc3V7/73e/c+s2dO1d+fn5au3atZsyYofXr10uSZs+ercOHD7teA/BsTNQG4Jr54YcfVK9ePW3btk2BgYFq2LChNm/erDZt2ui5557T6tWrtWTJElf/gwcPKjo6Wrt27VKTJk3UuXNn5efna9OmTW7bdTgcmj9/vvr27XuN9whAZeEMCoBKs3v3bg0YMECxsbFyOp2uyy/ne2Lz1q1btWLFCgUGBrqWZs2aSZLbZaGEhIRrUjsAe/GwQACVpnfv3oqJidFbb72lqKgolZaWqmXLlucd3FpQUKDevXvrL3/5S5l1kZGRrp8DAgIqtWYAZiCgAKgUx44d065du/TWW2+pU6dOkqQ1a9ZcsP+NN96o//znP2rQoIF8fMr3T5Ovr69KSkquql4AZuESD4BKUbt2bdWpU0czZ87Unj17tHz5cqWmpl6wf0pKio4fP64BAwZo/fr1ys7O1pIlS/TQQw9dMnw0aNBAy5YtU05Ojn788ceK3hUANiCgAKgUXl5eeu+997Rx40a1bNlSo0aN0gsvvHDB/lFRUVq7dq1KSkrUtWtXtWrVSo899phCQkLk5XXxf6peeuklZWRkKDo6Wm3btq3oXQFgA+7iAQAAxuEMCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgHAIKAAAwDgEFAAAYh4ACAACMQ0ABAADG+f+R4zF71Q5GnwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X = data[features]\n",
    "y = data[target]\n",
    "\n",
    "X = X.loc[:,~X.columns.duplicated()]\n",
    "\n",
    "sm = SMOTE(random_state=42)\n",
    "X_res, y_res= sm.fit_resample(X, y,)\n",
    "\n",
    "y_res.value_counts().plot(kind='bar', title='Count (target)', color=['green', 'orange', 'red', 'yellow'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X_res, y_res, test_size=0.2, random_state=42)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train = scaler.fit_transform(X_train)\n",
    "X_test = scaler.transform(X_test)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "ename": "ValueError",
     "evalue": "could not convert string to float: 'green'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[16], line 6\u001b[0m\n\u001b[0;32m      4\u001b[0m plt\u001b[38;5;241m.\u001b[39mclf()  \u001b[38;5;66;03m# 清除当前图形\u001b[39;00m\n\u001b[0;32m      5\u001b[0m plt\u001b[38;5;241m.\u001b[39mfigure(figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m10\u001b[39m, \u001b[38;5;241m6\u001b[39m))\n\u001b[1;32m----> 6\u001b[0m sns\u001b[38;5;241m.\u001b[39mheatmap(\u001b[43mdata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcorr\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m, annot\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, fmt\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.2f\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m      7\u001b[0m plt\u001b[38;5;241m.\u001b[39mshow()\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\frame.py:11049\u001b[0m, in \u001b[0;36mDataFrame.corr\u001b[1;34m(self, method, min_periods, numeric_only)\u001b[0m\n\u001b[0;32m  11047\u001b[0m cols \u001b[38;5;241m=\u001b[39m data\u001b[38;5;241m.\u001b[39mcolumns\n\u001b[0;32m  11048\u001b[0m idx \u001b[38;5;241m=\u001b[39m cols\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[1;32m> 11049\u001b[0m mat \u001b[38;5;241m=\u001b[39m \u001b[43mdata\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_numpy\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mfloat\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnan\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\n\u001b[0;32m  11051\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mpearson\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m  11052\u001b[0m     correl \u001b[38;5;241m=\u001b[39m libalgos\u001b[38;5;241m.\u001b[39mnancorr(mat, minp\u001b[38;5;241m=\u001b[39mmin_periods)\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\frame.py:1993\u001b[0m, in \u001b[0;36mDataFrame.to_numpy\u001b[1;34m(self, dtype, copy, na_value)\u001b[0m\n\u001b[0;32m   1991\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m dtype \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m   1992\u001b[0m     dtype \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mdtype(dtype)\n\u001b[1;32m-> 1993\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_mgr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mas_array\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcopy\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mna_value\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   1994\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m result\u001b[38;5;241m.\u001b[39mdtype \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m dtype:\n\u001b[0;32m   1995\u001b[0m     result \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39masarray(result, dtype\u001b[38;5;241m=\u001b[39mdtype)\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\internals\\managers.py:1694\u001b[0m, in \u001b[0;36mBlockManager.as_array\u001b[1;34m(self, dtype, copy, na_value)\u001b[0m\n\u001b[0;32m   1692\u001b[0m         arr\u001b[38;5;241m.\u001b[39mflags\u001b[38;5;241m.\u001b[39mwriteable \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m   1693\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1694\u001b[0m     arr \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_interleave\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mna_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mna_value\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   1695\u001b[0m     \u001b[38;5;66;03m# The underlying data was copied within _interleave, so no need\u001b[39;00m\n\u001b[0;32m   1696\u001b[0m     \u001b[38;5;66;03m# to further copy if copy=True or setting na_value\u001b[39;00m\n\u001b[0;32m   1698\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m na_value \u001b[38;5;129;01mis\u001b[39;00m lib\u001b[38;5;241m.\u001b[39mno_default:\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\internals\\managers.py:1747\u001b[0m, in \u001b[0;36mBlockManager._interleave\u001b[1;34m(self, dtype, na_value)\u001b[0m\n\u001b[0;32m   1741\u001b[0m rl \u001b[38;5;241m=\u001b[39m blk\u001b[38;5;241m.\u001b[39mmgr_locs\n\u001b[0;32m   1742\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m blk\u001b[38;5;241m.\u001b[39mis_extension:\n\u001b[0;32m   1743\u001b[0m     \u001b[38;5;66;03m# Avoid implicit conversion of extension blocks to object\u001b[39;00m\n\u001b[0;32m   1744\u001b[0m \n\u001b[0;32m   1745\u001b[0m     \u001b[38;5;66;03m# error: Item \"ndarray\" of \"Union[ndarray, ExtensionArray]\" has no\u001b[39;00m\n\u001b[0;32m   1746\u001b[0m     \u001b[38;5;66;03m# attribute \"to_numpy\"\u001b[39;00m\n\u001b[1;32m-> 1747\u001b[0m     arr \u001b[38;5;241m=\u001b[39m \u001b[43mblk\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalues\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_numpy\u001b[49m\u001b[43m(\u001b[49m\u001b[43m  \u001b[49m\u001b[38;5;66;43;03m# type: ignore[union-attr]\u001b[39;49;00m\n\u001b[0;32m   1748\u001b[0m \u001b[43m        \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m   1749\u001b[0m \u001b[43m        \u001b[49m\u001b[43mna_value\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mna_value\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m   1750\u001b[0m \u001b[43m    \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   1751\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m   1752\u001b[0m     arr \u001b[38;5;241m=\u001b[39m blk\u001b[38;5;241m.\u001b[39mget_values(dtype)\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\arrays\\base.py:568\u001b[0m, in \u001b[0;36mExtensionArray.to_numpy\u001b[1;34m(self, dtype, copy, na_value)\u001b[0m\n\u001b[0;32m    539\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mto_numpy\u001b[39m(\n\u001b[0;32m    540\u001b[0m     \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m    541\u001b[0m     dtype: npt\u001b[38;5;241m.\u001b[39mDTypeLike \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m    542\u001b[0m     copy: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m    543\u001b[0m     na_value: \u001b[38;5;28mobject\u001b[39m \u001b[38;5;241m=\u001b[39m lib\u001b[38;5;241m.\u001b[39mno_default,\n\u001b[0;32m    544\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m np\u001b[38;5;241m.\u001b[39mndarray:\n\u001b[0;32m    545\u001b[0m \u001b[38;5;250m    \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m    546\u001b[0m \u001b[38;5;124;03m    Convert to a NumPy ndarray.\u001b[39;00m\n\u001b[0;32m    547\u001b[0m \n\u001b[1;32m   (...)\u001b[0m\n\u001b[0;32m    566\u001b[0m \u001b[38;5;124;03m    numpy.ndarray\u001b[39;00m\n\u001b[0;32m    567\u001b[0m \u001b[38;5;124;03m    \"\"\"\u001b[39;00m\n\u001b[1;32m--> 568\u001b[0m     result \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masarray\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m    569\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m copy \u001b[38;5;129;01mor\u001b[39;00m na_value \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m lib\u001b[38;5;241m.\u001b[39mno_default:\n\u001b[0;32m    570\u001b[0m         result \u001b[38;5;241m=\u001b[39m result\u001b[38;5;241m.\u001b[39mcopy()\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\arrays\\_mixins.py:81\u001b[0m, in \u001b[0;36mravel_compat.<locals>.method\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m     78\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(meth)\n\u001b[0;32m     79\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmethod\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m     80\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m---> 81\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m meth(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m     83\u001b[0m     flags \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_ndarray\u001b[38;5;241m.\u001b[39mflags\n\u001b[0;32m     84\u001b[0m     flat \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mravel(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mK\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
      "File \u001b[1;32mc:\\Users\\GARLANG\\Desktop\\ML Class\\ML\\.venv\\lib\\site-packages\\pandas\\core\\arrays\\categorical.py:1664\u001b[0m, in \u001b[0;36mCategorical.__array__\u001b[1;34m(self, dtype, copy)\u001b[0m\n\u001b[0;32m   1662\u001b[0m ret \u001b[38;5;241m=\u001b[39m take_nd(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcategories\u001b[38;5;241m.\u001b[39m_values, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_codes)\n\u001b[0;32m   1663\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m dtype \u001b[38;5;129;01mand\u001b[39;00m np\u001b[38;5;241m.\u001b[39mdtype(dtype) \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcategories\u001b[38;5;241m.\u001b[39mdtype:\n\u001b[1;32m-> 1664\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masarray\u001b[49m\u001b[43m(\u001b[49m\u001b[43mret\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   1665\u001b[0m \u001b[38;5;66;03m# When we're a Categorical[ExtensionArray], like Interval,\u001b[39;00m\n\u001b[0;32m   1666\u001b[0m \u001b[38;5;66;03m# we need to ensure __array__ gets all the way to an\u001b[39;00m\n\u001b[0;32m   1667\u001b[0m \u001b[38;5;66;03m# ndarray.\u001b[39;00m\n\u001b[0;32m   1668\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m np\u001b[38;5;241m.\u001b[39masarray(ret)\n",
      "\u001b[1;31mValueError\u001b[0m: could not convert string to float: 'green'"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x600 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "plt.clf()  # 清除当前图形\n",
    "plt.figure(figsize=(10, 6))\n",
    "sns.heatmap(data.corr(), annot=True, fmt=\".2f\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeClassifier(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "DecisionTreeClassifier(random_state=42)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "models = []\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "dt = DecisionTreeClassifier(random_state=42)\n",
    "dt.fit(X_train, y_train)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "88.07692307692308\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "       green       0.79      0.89      0.84        61\n",
      "      orange       0.88      0.88      0.88        73\n",
      "         red       0.94      0.97      0.95        62\n",
      "      yellow       0.93      0.80      0.86        64\n",
      "\n",
      "    accuracy                           0.88       260\n",
      "   macro avg       0.88      0.88      0.88       260\n",
      "weighted avg       0.88      0.88      0.88       260\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report, confusion_matrix, accuracy_score\n",
    "dt_pred = dt.predict(X_test)\n",
    "print(accuracy_score(dt_pred,y_test)*100)\n",
    "print(classification_report(dt_pred, y_test))\n",
    "sns.heatmap(confusion_matrix(dt_pred, y_test), annot = True)\n",
    "plt.plot()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;KNeighborsClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.neighbors.KNeighborsClassifier.html\">?<span>Documentation for KNeighborsClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KNeighborsClassifier()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "KNeighborsClassifier()"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "knn = KNeighborsClassifier()\n",
    "knn.fit(X_train, y_train)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "89.23076923076924\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "       green       0.78      0.96      0.86        55\n",
      "      orange       0.95      0.83      0.88        83\n",
      "         red       0.92      0.95      0.94        62\n",
      "      yellow       0.93      0.85      0.89        60\n",
      "\n",
      "    accuracy                           0.89       260\n",
      "   macro avg       0.89      0.90      0.89       260\n",
      "weighted avg       0.90      0.89      0.89       260\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "knn_pred = knn.predict(X_test)\n",
    "print(accuracy_score(knn_pred, y_test)*100)\n",
    "print(classification_report(knn_pred, y_test))\n",
    "sns.heatmap(confusion_matrix(knn_pred, y_test), annot = True)\n",
    "plt.plot()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-3 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-3 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-3 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-3 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-3 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-3 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-3 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-3 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-3 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-3 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;RandomForestClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.RandomForestClassifier.html\">?<span>Documentation for RandomForestClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestClassifier(random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestClassifier(random_state=42)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "rf = RandomForestClassifier(random_state=42)\n",
    "rf.fit(X_train, y_train)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "91.15384615384615\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "       green       0.82      0.93      0.88        60\n",
      "      orange       0.95      0.91      0.93        76\n",
      "         red       0.95      0.98      0.97        62\n",
      "      yellow       0.93      0.82      0.87        62\n",
      "\n",
      "    accuracy                           0.91       260\n",
      "   macro avg       0.91      0.91      0.91       260\n",
      "weighted avg       0.91      0.91      0.91       260\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rf_pred = rf.predict(X_test)\n",
    "print(accuracy_score(rf_pred, y_test)*100)\n",
    "print(classification_report(rf_pred, y_test))\n",
    "sns.heatmap(confusion_matrix(rf_pred, y_test), annot = True)\n",
    "plt.plot()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingClassifier(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;GradientBoostingClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html\">?<span>Documentation for GradientBoostingClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GradientBoostingClassifier(random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "GradientBoostingClassifier(random_state=42)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "gb = GradientBoostingClassifier(random_state=42)\n",
    "gb.fit(X_train, y_train)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "92.6923076923077\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "       green       0.82      0.93      0.88        60\n",
      "      orange       0.99      0.91      0.95        79\n",
      "         red       0.97      0.98      0.98        63\n",
      "      yellow       0.93      0.88      0.90        58\n",
      "\n",
      "    accuracy                           0.93       260\n",
      "   macro avg       0.93      0.93      0.93       260\n",
      "weighted avg       0.93      0.93      0.93       260\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gb_pred = gb.predict(X_test)\n",
    "print(accuracy_score(gb_pred, y_test)*100)\n",
    "print(classification_report(gb_pred, y_test))\n",
    "sns.heatmap(confusion_matrix(gb_pred, y_test), annot = True)\n",
    "plt.plot()\n",
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
